version: 2 jobs: fast_tests: machine: enabled: true steps: - checkout - run: command: | cd .circleci && ./run-tests.sh "Fast=Fast" selenium_tests: machine: enabled: true steps: - checkout - run: command: | cd .circleci && ./run-tests.sh "Selenium=Selenium" integration_tests: machine: enabled: true steps: - checkout - run: command: | cd .circleci && ./run-tests.sh "Integration=Integration" external_tests: machine: enabled: true steps: - checkout - run: command: | if [ "$CIRCLE_PROJECT_USERNAME" == "btcpayserver" ] && [ "$CIRCLE_PROJECT_REPONAME" == "btcpayserver" ]; then cd .circleci && ./run-tests.sh "ExternalIntegration=ExternalIntegration" else echo "Skipping running ExternalIntegration tests outside of context of main user and repository that have access to secrets" fi # publish jobs require $DOCKERHUB_REPO, $DOCKERHUB_USER, $DOCKERHUB_PASS defined amd64: machine: enabled: true steps: - checkout - run: command: | LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag # sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-amd64 -f amd64.Dockerfile . sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-amd64 arm32v7: machine: enabled: true steps: - checkout - run: command: | sudo docker run --rm --privileged multiarch/qemu-user-static:register --reset LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag # sudo docker build --pull -t $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 -f arm32v7.Dockerfile . sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 multiarch: machine: enabled: true image: circleci/classic:201808-01 steps: - run: command: | # Turn on Experimental features sudo mkdir $HOME/.docker sudo sh -c 'echo "{ \"experimental\": \"enabled\" }" >> $HOME/.docker/config.json' # sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS # LATEST_TAG=${CIRCLE_TAG:1} #trim v from tag sudo docker manifest create --amend $DOCKERHUB_REPO:$LATEST_TAG $DOCKERHUB_REPO:$LATEST_TAG-amd64 $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 sudo docker manifest annotate $DOCKERHUB_REPO:$LATEST_TAG $DOCKERHUB_REPO:$LATEST_TAG-amd64 --os linux --arch amd64 sudo docker manifest annotate $DOCKERHUB_REPO:$LATEST_TAG $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 --os linux --arch arm --variant v7 sudo docker manifest push $DOCKERHUB_REPO:$LATEST_TAG -p workflows: version: 2 build_and_test: jobs: - fast_tests - selenium_tests - integration_tests - external_tests: filters: branches: only: master publish: jobs: - amd64: filters: # ignore any commit on any branch by default branches: ignore: /.*/ # only act on version tags v1.0.0.88 # OR feature tags like zlndseedbackup tags: only: /(v[1-9]+(\.[0-9]+)*)|(z[a-z]+)/ - arm32v7: filters: branches: ignore: /.*/ tags: only: /(v[1-9]+(\.[0-9]+)*)|(z[a-z]+)/ - multiarch: requires: - amd64 - arm32v7 filters: branches: ignore: /.*/ tags: only: /(v[1-9]+(\.[0-9]+)*)|(z[a-z]+)/