version: 2.1 executors: go: docker: - image: circleci/golang:latest working_directory: ~/repo workflows: version: 2 ci: jobs: - checkout: filters: branches: only: /.*/ tags: only: /.*/ - linting: requires: - checkout filters: branches: only: /.*/ tags: only: /.*/ - testing: requires: - checkout filters: branches: only: /.*/ tags: only: /.*/ - build: requires: - testing - linting filters: tags: ignore: /^v[0-9]+(\.[0-9]+)*$/ branches: only: /.*/ - publishing: requires: - testing - linting filters: branches: ignore: /.*/ tags: only: /^v[0-9]+(\.[0-9]+)*$/ jobs: checkout: executor: go steps: - checkout - persist_to_workspace: paths: - . root: ~/repo linting: executor: go steps: - attach_workspace: at: . - run: go build . - run: go get -u golang.org/x/lint/golint - run: golint -set_exit_status ./... testing: executor: go steps: - attach_workspace: at: . - run: mkdir -p /tmp/test-results - run: go build ./... - run: go get gotest.tools/gotestsum - run: gotestsum --junitfile /tmp/test-results/unit-tests.xml - store_test_results: path: /tmp/test-results build: executor: go steps: - attach_workspace: at: . - setup_remote_docker - run: name: Install Goreleaser command: | cd .. && \ wget https://github.com/goreleaser/goreleaser/releases/download/v0.104.1/goreleaser_Linux_x86_64.tar.gz && \ tar -xvf goreleaser_Linux_x86_64.tar.gz && \ ./goreleaser -v - run: name: Execute goreleaser command: CGO_ENABLED=${CGO_ENABLED:-0} ../goreleaser --snapshot --skip-publish --debug publishing: executor: go steps: - attach_workspace: at: . - setup_remote_docker - run: name: Install Goreleaser command: | cd .. && \ wget https://github.com/goreleaser/goreleaser/releases/download/v0.104.1/goreleaser_Linux_x86_64.tar.gz && \ tar -xvf goreleaser_Linux_x86_64.tar.gz && \ ./goreleaser -v - run: name: Login to docker hub command: | echo "$DOCKER_PASS" | docker login -u $DOCKER_USER --password-stdin - run: name: Execute goreleaser command: CGO_ENABLED=${CGO_ENABLED:-0} ../goreleaser --debug - run: name: Docker Manifest command: | mkdir -p ~/.docker/ && \ echo '{"experimental": "enabled"}' > ~/.docker/config.json && \ docker manifest create containrrr/watchtower:${CIRCLE_TAG} containrrr/watchtower:amd64-${CIRCLE_TAG} containrrr/watchtower:i386-${CIRCLE_TAG} containrrr/watchtower:armhf-${CIRCLE_TAG} containrrr/watchtower:arm64v8-${CIRCLE_TAG} && \ docker manifest annotate containrrr/watchtower:${CIRCLE_TAG} containrrr/watchtower:i386-${CIRCLE_TAG} --os linux --arch 386 && \ docker manifest annotate containrrr/watchtower:${CIRCLE_TAG} containrrr/watchtower:armhf-${CIRCLE_TAG} --os linux --arch arm && \ docker manifest annotate containrrr/watchtower:${CIRCLE_TAG} containrrr/watchtower:arm64v8-${CIRCLE_TAG} --os linux --arch arm64 --variant v8 && \ docker tag containrrr/watchtower:amd64-${CIRCLE_TAG} containrrr/watchtower:amd64-latest && \ docker tag containrrr/watchtower:i386-${CIRCLE_TAG} containrrr/watchtower:i386-latest && \ docker tag containrrr/watchtower:armhf-${CIRCLE_TAG} containrrr/watchtower:armhf-latest && \ docker tag containrrr/watchtower:arm64v8-${CIRCLE_TAG} containrrr/watchtower:arm64v8-latest && \ docker push containrrr/watchtower:amd64-latest && \ docker push containrrr/watchtower:i386-latest && \ docker push containrrr/watchtower:armhf-latest && \ docker push containrrr/watchtower:arm64v8-latest && \ docker manifest create containrrr/watchtower:latest containrrr/watchtower:amd64-latest containrrr/watchtower:i386-latest containrrr/watchtower:armhf-latest containrrr/watchtower:arm64v8-latest && \ docker manifest annotate containrrr/watchtower:latest containrrr/watchtower:i386-latest --os linux --arch 386 && \ docker manifest annotate containrrr/watchtower:latest containrrr/watchtower:armhf-latest --os linux --arch arm && \ docker manifest annotate containrrr/watchtower:latest containrrr/watchtower:arm64v8-latest --os linux --arch arm64 --variant v8 && \ docker manifest push containrrr/watchtower:${CIRCLE_TAG} && \ docker manifest push containrrr/watchtower:latest - run: name: Sync Readme to Dockerhub command: | docker pull lsiodev/readme-sync && \ docker run --rm=true \ -e DOCKERHUB_USERNAME=$DOCKER_USER \ -e DOCKERHUB_PASSWORD="$DOCKER_PASS" \ -e GIT_REPOSITORY=containrrr/watchtower \ -e DOCKER_REPOSITORY=containrrr/watchtower \ -e GIT_BRANCH=master \ lsiodev/readme-sync bash -c 'node sync'