Merge branch 'containrrr:main' into main #26
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release (Production) | |
on: | |
workflow_dispatch: {} | |
push: | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]+' | |
- '**/v[0-9]+.[0-9]+.[0-9]+' | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: 1.18.x | |
- uses: dominikh/[email protected] | |
with: | |
version: "2022.1.3" | |
install-go: "false" # StaticCheck uses go v1.17 which does not support `any` | |
test: | |
name: Test | |
strategy: | |
matrix: | |
go-version: | |
- 1.18.x | |
platform: | |
- ubuntu-latest | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: 1.18.x | |
- name: Run tests | |
run: | | |
go test ./... -coverprofile coverage.out | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
needs: | |
- test | |
- lint | |
env: | |
CGO_ENABLED: 0 | |
TAG: ${{ github.ref }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: 1.18.x | |
- name: Login to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Login to GHCR | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
registry: ghcr.io | |
- name: Build | |
uses: goreleaser/goreleaser-action@v4 | |
with: | |
version: latest | |
args: release --clean | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Enable experimental docker features | |
run: | | |
mkdir -p ~/.docker/ && \ | |
echo '{"experimental": "enabled"}' > ~/.docker/config.json | |
- name: Create manifest for version | |
run: | | |
export DH_TAG=$(git tag --points-at HEAD | sed 's/^v*//') | |
docker manifest create \ | |
bigmangos/watchtower:$DH_TAG \ | |
bigmangos/watchtower:amd64-$DH_TAG \ | |
bigmangos/watchtower:i386-$DH_TAG \ | |
bigmangos/watchtower:armhf-$DH_TAG \ | |
bigmangos/watchtower:arm64v8-$DH_TAG | |
docker manifest create \ | |
ghcr.io/bigmangos/watchtower:$DH_TAG \ | |
ghcr.io/bigmangos/watchtower:amd64-$DH_TAG \ | |
ghcr.io/bigmangos/watchtower:i386-$DH_TAG \ | |
ghcr.io/bigmangos/watchtower:armhf-$DH_TAG \ | |
ghcr.io/bigmangos/watchtower:arm64v8-$DH_TAG | |
- name: Annotate manifest for version | |
run: | | |
for REPO in '' ghcr.io/ ; do | |
docker manifest annotate \ | |
${REPO}bigmangos/watchtower:$(echo $TAG | sed 's/refs\/tags\/v//') \ | |
${REPO}bigmangos/watchtower:i386-$(echo $TAG | sed 's/refs\/tags\/v//') \ | |
--os linux \ | |
--arch 386 | |
docker manifest annotate \ | |
${REPO}bigmangos/watchtower:$(echo $TAG | sed 's/refs\/tags\/v//') \ | |
${REPO}bigmangos/watchtower:armhf-$(echo $TAG | sed 's/refs\/tags\/v//') \ | |
--os linux \ | |
--arch arm | |
docker manifest annotate \ | |
${REPO}bigmangos/watchtower:$(echo $TAG | sed 's/refs\/tags\/v//') \ | |
${REPO}bigmangos/watchtower:arm64v8-$(echo $TAG | sed 's/refs\/tags\/v//') \ | |
--os linux \ | |
--arch arm64 \ | |
--variant v8 | |
done | |
- name: Create manifest for latest | |
run: | | |
docker manifest create \ | |
bigmangos/watchtower:latest \ | |
bigmangos/watchtower:amd64-latest \ | |
bigmangos/watchtower:i386-latest \ | |
bigmangos/watchtower:armhf-latest \ | |
bigmangos/watchtower:arm64v8-latest | |
docker manifest create \ | |
ghcr.io/bigmangos/watchtower:latest \ | |
ghcr.io/bigmangos/watchtower:amd64-latest \ | |
ghcr.io/bigmangos/watchtower:i386-latest \ | |
ghcr.io/bigmangos/watchtower:armhf-latest \ | |
ghcr.io/bigmangos/watchtower:arm64v8-latest | |
- name: Annotate manifest for latest | |
run: | | |
for REPO in '' ghcr.io/ ; do | |
docker manifest annotate \ | |
${REPO}bigmangos/watchtower:latest \ | |
${REPO}bigmangos/watchtower:i386-latest \ | |
--os linux \ | |
--arch 386 | |
docker manifest annotate \ | |
${REPO}bigmangos/watchtower:latest \ | |
${REPO}bigmangos/watchtower:armhf-latest \ | |
--os linux \ | |
--arch arm | |
docker manifest annotate \ | |
${REPO}bigmangos/watchtower:latest \ | |
${REPO}bigmangos/watchtower:arm64v8-latest \ | |
--os linux \ | |
--arch arm64 \ | |
--variant v8 | |
done | |
- name: Push manifests to Dockerhub | |
env: | |
DOCKER_USER: ${{ secrets.DOCKERHUB_USERNAME }} | |
DOCKER_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} | |
run: | | |
docker login -u $DOCKER_USER -p $DOCKER_TOKEN && \ | |
docker manifest push bigmangos/watchtower:$(echo $TAG | sed 's/refs\/tags\/v//') && \ | |
docker manifest push bigmangos/watchtower:latest | |
- name: Push manifests to GitHub Container Registry | |
env: | |
DOCKER_USER: ${{ github.actor }} | |
DOCKER_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
docker login -u $DOCKER_USER -p $DOCKER_TOKEN ghcr.io && \ | |
docker manifest push ghcr.io/bigmangos/watchtower:$(echo $TAG | sed 's/refs\/tags\/v//') && \ | |
docker manifest push ghcr.io/bigmangos/watchtower:latest | |
# renew-docs: | |
# name: Refresh pkg.go.dev | |
# needs: build | |
# runs-on: ubuntu-latest | |
# steps: | |
# - name: Pull new module version | |
# uses: andrewslotin/go-proxy-pull-action@50fea06a976087614babb9508e5c528b464f4645 #master@2022-10-14 | |