version: 2 jobs: build: machine: docker_layer_caching: true steps: - checkout test: machine: docker_layer_caching: true steps: - checkout - run: command: | cd BTCPayServer.Tests docker-compose down --v docker-compose build docker-compose run tests # publish jobs require $DOCKERHUB_REPO, $DOCKERHUB_USER, $DOCKERHUB_PASS defined publish_docker_linuxamd64: machine: docker_layer_caching: 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 Dockerfile.linuxamd64 . sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-amd64 publish_docker_linuxarm: machine: docker_layer_caching: 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 Dockerfile.linuxarm32v7 . sudo docker login --username=$DOCKERHUB_USER --password=$DOCKERHUB_PASS sudo docker push $DOCKERHUB_REPO:$LATEST_TAG-arm32v7 publish_docker_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: - test publish: jobs: - publish_docker_linuxamd64: filters: # ignore any commit on any branch by default branches: ignore: /.*/ # only act on version tags tags: only: /v[1-9]+(\.[0-9]+)*/ - publish_docker_linuxarm: filters: branches: ignore: /.*/ tags: only: /v[1-9]+(\.[0-9]+)*/ - publish_docker_multiarch: requires: - publish_docker_linuxamd64 - publish_docker_linuxarm filters: branches: ignore: /.*/ tags: only: /v[1-9]+(\.[0-9]+)*/