mirror of https://github.com/containrrr/watchtower
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			239 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			YAML
		
	
			
		
		
	
	
			239 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			YAML
		
	
version: 2.1
 | 
						|
 | 
						|
executors:
 | 
						|
  py:
 | 
						|
    docker:
 | 
						|
      - image: circleci/python:latest
 | 
						|
    working_directory: ~/repo
 | 
						|
  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:
 | 
						|
            branches:
 | 
						|
              only: /.*/
 | 
						|
            tags:
 | 
						|
              ignore: /^v[0-9]+(\.[0-9]+)*$/
 | 
						|
      - publishing:
 | 
						|
          requires:
 | 
						|
            - testing
 | 
						|
            - linting
 | 
						|
          filters:
 | 
						|
            branches:
 | 
						|
              ignore: /.*/
 | 
						|
            tags:
 | 
						|
              only: /^v[0-9]+(\.[0-9]+)*$/
 | 
						|
      - publish-docs:
 | 
						|
          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: go build ./...
 | 
						|
      - run: go get github.com/schrej/godacov
 | 
						|
      - run: go test ./... -coverprofile coverage.out
 | 
						|
      # - run: godacov -t $CODACY_TOKEN -r ./coverage.out -c $CIRCLE_SHA1
 | 
						|
  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: Enable experimental docker features
 | 
						|
          command: |
 | 
						|
            mkdir -p ~/.docker/ && \
 | 
						|
            echo '{"experimental": "enabled"}' > ~/.docker/config.json            
 | 
						|
      - run:
 | 
						|
          name: Create manifest for version
 | 
						|
          command: |
 | 
						|
            docker manifest create \
 | 
						|
              containrrr/watchtower:$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              containrrr/watchtower:amd64-$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              containrrr/watchtower:i386-$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              containrrr/watchtower:armhf-$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              containrrr/watchtower:arm64v8-$(echo $CIRCLE_TAG | sed 's/^v*//')            
 | 
						|
      - run:
 | 
						|
          name: Annotate i386 version
 | 
						|
          command: |
 | 
						|
            docker manifest annotate \
 | 
						|
              containrrr/watchtower:$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              containrrr/watchtower:i386-$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              --os linux \
 | 
						|
              --arch 386            
 | 
						|
      - run:
 | 
						|
          name: Annotate ARM version
 | 
						|
          command: |
 | 
						|
            docker manifest annotate \
 | 
						|
              containrrr/watchtower:$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              containrrr/watchtower:armhf-$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              --os linux \
 | 
						|
              --arch arm            
 | 
						|
      - run:
 | 
						|
          name: Annotate ARM64 version
 | 
						|
          command: |
 | 
						|
            docker manifest annotate \
 | 
						|
              containrrr/watchtower:$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              containrrr/watchtower:arm64v8-$(echo $CIRCLE_TAG | sed 's/^v*//') \
 | 
						|
              --os linux \
 | 
						|
              --arch arm64 \
 | 
						|
              --variant v8            
 | 
						|
      - run:
 | 
						|
          name: Create manifest for latest
 | 
						|
          command: |
 | 
						|
            docker manifest create \
 | 
						|
              containrrr/watchtower:latest \
 | 
						|
              containrrr/watchtower:amd64-latest \
 | 
						|
              containrrr/watchtower:i386-latest \
 | 
						|
              containrrr/watchtower:armhf-latest \
 | 
						|
              containrrr/watchtower:arm64v8-latest            
 | 
						|
      - run:
 | 
						|
          name: Annotate i386 latest
 | 
						|
          command: |
 | 
						|
            docker manifest annotate \
 | 
						|
              containrrr/watchtower:latest \
 | 
						|
              containrrr/watchtower:i386-latest \
 | 
						|
              --os linux \
 | 
						|
              --arch 386            
 | 
						|
      - run:
 | 
						|
          name: Annotate ARM latest
 | 
						|
          command: |
 | 
						|
            docker manifest annotate \
 | 
						|
              containrrr/watchtower:latest \
 | 
						|
              containrrr/watchtower:armhf-latest \
 | 
						|
              --os linux \
 | 
						|
              --arch arm            
 | 
						|
      - run:
 | 
						|
          name: Annotate ARM64 latest
 | 
						|
          command: |
 | 
						|
            docker manifest annotate \
 | 
						|
              containrrr/watchtower:latest \
 | 
						|
              containrrr/watchtower:arm64v8-latest \
 | 
						|
              --os linux \
 | 
						|
              --arch arm64 \
 | 
						|
              --variant v8            
 | 
						|
      - run:
 | 
						|
          name: Push manifests to Dockerhub
 | 
						|
          command: |
 | 
						|
            echo "$DOCKER_PASS" | docker login -u $DOCKER_USER --password-stdin &&
 | 
						|
            docker manifest push containrrr/watchtower:$(echo $CIRCLE_TAG | sed 's/^v*//') && \
 | 
						|
            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'            
 | 
						|
  publish-docs:
 | 
						|
    executor: py
 | 
						|
    steps:
 | 
						|
      - attach_workspace:
 | 
						|
          at: .
 | 
						|
      - run:
 | 
						|
          name: Install prerequisites
 | 
						|
          command: |
 | 
						|
            sudo pip install \
 | 
						|
              mkdocs \
 | 
						|
              mkdocs-material \
 | 
						|
              md-toc            
 | 
						|
      - add_ssh_keys:
 | 
						|
          fingerprints:
 | 
						|
            - '91:75:47:15:b2:8e:85:e5:67:0e:63:7f:22:d2:b4:6e'
 | 
						|
      - run:
 | 
						|
          name: Generate and publish
 | 
						|
          command: |
 | 
						|
            mkdir ~/.ssh && touch ~/.ssh/known_hosts;
 | 
						|
            ssh-keyscan -H github.com >> ~/.ssh/known_hosts && \
 | 
						|
              mkdocs gh-deploy            
 |