1
0
mirror of https://github.com/containrrr/watchtower.git synced 2024-12-15 09:14:13 +02:00
watchtower/.circleci/config.yml

151 lines
5.6 KiB
YAML
Raw Normal View History

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
2019-04-06 14:05:01 +02:00
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'