version: 2.0 jobs: build-deploy: # build for the master branch machine: true working_directory: ~/addons-server steps: - checkout - run: > 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 - run: name: Build docker image and push to repo command: | docker build -t app:build -f Dockerfile.deploy . docker tag app:build ${DOCKERHUB_REPO}:latest docker login -e $DOCKERHUB_EMAIL -u $DOCKERHUB_USER -p $DOCKERHUB_PASS docker push ${DOCKERHUB_REPO}:latest build-release: # build for releases (tags) machine: true working_directory: ~/addons-server steps: - checkout - run: > 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 - run: name: Build docker image and push to repo command: | docker build -t app:build -f Dockerfile.deploy . docker tag app:build ${DOCKERHUB_REPO}:${CIRCLE_TAG} docker login -e $DOCKERHUB_EMAIL -u $DOCKERHUB_USER -p $DOCKERHUB_PASS docker push ${DOCKERHUB_REPO}:${CIRCLE_TAG} integration_test: working_directory: ~/addons-server machine: true steps: - checkout - restore_cache: keys: - uitest-cache-{{ checksum "requirements/docs.txt" }} - uitest-cache-{{ checksum "requirements/prod.txt" }} - uitest-cache-{{ checksum "requirements/dev.txt" }} - uitest-cache-{{ checksum "requirements/uitests.txt" }} - uitest-cache- - run: name: Install Docker Compose command: | set -x sudo pip install docker-compose - run: name: Start container, verify it's running and start tests command: | set -x sudo sysctl -w vm.max_map_count=262144 docker-compose up -d sleep 10 docker-compose exec web bash /code/scripts/ui-test.sh - store_artifacts: path: ui-test-results - save_cache: key: uitest-cache-{{ checksum "requirements/docs.txt" }} paths: - .tox - save_cache: key: uitest-cache-{{ checksum "requirements/prod.txt" }} paths: - .tox - save_cache: key: uitest-cache-{{ checksum "requirements/dev.txt" }} paths: - .tox - save_cache: key: uitest-cache-{{ checksum "requirements/uitests.txt" }} paths: - .tox - save_cache: key: uitest-cache- paths: - .tox workflows: version: 2 build_test_deploy_release: jobs: - build-deploy: filters: branches: only: master - build-release: filters: tags: only: /.*/ branches: ignore: /.*/ - integration_test