Permalink
Cannot retrieve contributors at this time
| machine: | |
| environment: | |
| # make some env vars to save typing | |
| # GWS should already exists on the ubuntu trusty build image | |
| GWS: "$HOME/.go_workspace" | |
| A: "$GWS/src/github.com/$CIRCLE_PROJECT_USERNAME" | |
| B: "$A/$CIRCLE_PROJECT_REPONAME" | |
| # Use to install Custom golang from https://golang.org/dl/ | |
| GODIST: "go1.9.linux-amd64.tar.gz" | |
| GODIST_HASH: "d70eadefce8e160638a9a6db97f7192d8463069ab33138893ad3bf31b0650a79" | |
| # server-syncstorage container to test against | |
| PYSYNC_VERSION: "1.6.9" | |
| services: | |
| - docker | |
| # install custom golang | |
| post: | |
| - mkdir -p download | |
| - test -e download/$GODIST || curl -o download/$GODIST https://storage.googleapis.com/golang/$GODIST | |
| # verify it | |
| - echo "$GODIST_HASH download/$GODIST" | sha256sum -c | |
| - sudo rm -rf /usr/local/go | |
| - sudo tar -C /usr/local -xzf download/$GODIST | |
| dependencies: | |
| cache_directories: | |
| - ~/download | |
| override: | |
| # ported from https://discuss.circleci.com/t/overriding-go-inference-in-the-dependencies-phase/660 | |
| # put the source in $GOPATH | |
| - mkdir -p $GWS/pkg $GWS/bin $A | |
| - ln -fs $HOME/$CIRCLE_PROJECT_REPONAME $B | |
| # make it *only* $GWS, dunno why there's two defaults in there | |
| - echo 'export GOPATH=$GWS' >> ~/.circlerc | |
| # pre-compile go-sqlite3 to save time in testing/docker container building | |
| - cd "$B" && go install ./vendor/github.com/mattn/go-sqlite3 | |
| # create a version.json | |
| - > | |
| printf '{"commit":"%s","version":"%s","source":"https://github.com/%s/%s","build":"%s"}\n' | |
| "$CIRCLE_SHA1" | |
| "$CIRCLE_TAG" | |
| "$CIRCLE_PROJECT_USERNAME" | |
| "$CIRCLE_PROJECT_REPONAME" | |
| "$CIRCLE_BUILD_URL" > version.json | |
| - cp version.json $CIRCLE_ARTIFACTS | |
| # build a static binary | |
| - cd "$B" && go build --ldflags '-extldflags "-static"' . | |
| # build image and put its sha256 into artifacts to aid verification | |
| - docker build -t "app:build" . | |
| - test -e $CIRCLE_ARTIFACTS/bin || mkdir -p $CIRCLE_ARTIFACTS/bin | |
| - cp go-syncstorage $CIRCLE_ARTIFACTS/bin/go-syncstorage-linux-amd64-$CIRCLE_SHA1 | |
| test: | |
| override: | |
| - cd "$B" && go vet ./token ./syncstorage ./web | |
| - cd "$B" && go test -v ./token ./syncstorage ./web | |
| - > | |
| docker run | |
| --net=host | |
| --detach=true | |
| -e "PORT=8888" | |
| -e "HOST=127.0.0.1" | |
| -e "SECRETS=secret" | |
| -e "DATA_DIR=:memory:" | |
| app:build | |
| - sleep 3 | |
| - > | |
| docker run | |
| --net=host mozilla/server-syncstorage:$PYSYNC_VERSION | |
| test_endpoint "http://127.0.0.1:8888#secret" | |
| deployment: | |
| hub_latest: | |
| branch: master | |
| commands: | |
| - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS | |
| - docker tag app:build ${DOCKERHUB_REPO}:latest | |
| - docker push ${DOCKERHUB_REPO}:latest | |
| hub_releases: | |
| tag: /.*/ | |
| commands: | |
| - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS | |
| - docker tag app:build ${DOCKERHUB_REPO}:${CIRCLE_TAG} | |
| - docker push ${DOCKERHUB_REPO}:${CIRCLE_TAG} | |
| # push any releases candidate branches to DockerHub | |
| hub_release_candidates: | |
| branch: /rc_.*/ | |
| commands: | |
| - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS | |
| - docker tag app:build ${DOCKERHUB_REPO}:${CIRCLE_BRANCH} | |
| - docker push ${DOCKERHUB_REPO}:${CIRCLE_BRANCH} |