release v0.8.0 #35
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 Workflow | |
on: | |
push: | |
tags: | |
- v* | |
permissions: | |
contents: read | |
jobs: | |
build: | |
permissions: write-all | |
name: Build Shoutrrr | |
runs-on: ubuntu-latest | |
env: | |
DOCKER_CLI_EXPERIMENTAL: enabled | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v3 | |
- uses: arnested/go-version-action@v1 | |
id: go-version | |
- name: Set up Go ${{ steps.go-version.outputs.latest }} | |
uses: actions/setup-go@v4 | |
id: go | |
with: | |
go-version: ${{ steps.go-version.outputs.latest }} | |
check-latest: true | |
- name: Build | |
run: CGO_ENABLED=0 go build -v . | |
- name: Test | |
run: CGO_ENABLED=0 go test -v -coverprofile=coverage.out -covermode=atomic ./... | |
- name: Publish coverage | |
uses: codecov/codecov-action@v3 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Install GoReleaser | |
uses: goreleaser/goreleaser-action@v4 | |
with: | |
install-only: true | |
- name: Show GoReleaser version | |
run: goreleaser -v | |
- name: Login to docker hub | |
uses: azure/docker-login@v1 | |
with: | |
username: '${{ secrets.DOCKER_USER }}' | |
password: '${{ secrets.DOCKER_PASSWORD }}' | |
- name: Execute goreleaser | |
run: | | |
GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} CGO_ENABLED=0 goreleaser --debug --rm-dist | |
- name: Enable experimental docker features | |
run: | | |
mkdir -p ~/.docker/ && \ | |
echo '{"experimental": "enabled"}' > ~/.docker/config.json | |
- name: Create manifest for version | |
run: | | |
docker manifest create \ | |
containrrr/shoutrrr:${GITHUB_REF/refs\/tags\/v/} \ | |
containrrr/shoutrrr:amd64-${GITHUB_REF/refs\/tags\/v/} \ | |
containrrr/shoutrrr:i386-${GITHUB_REF/refs\/tags\/v/} \ | |
containrrr/shoutrrr:armhf-${GITHUB_REF/refs\/tags\/v/} \ | |
containrrr/shoutrrr:arm64v8-${GITHUB_REF/refs\/tags\/v/} | |
- name: Annotate i386 version | |
run: | | |
docker manifest annotate \ | |
containrrr/shoutrrr:${GITHUB_REF/refs\/tags\/v/} \ | |
containrrr/shoutrrr:i386-${GITHUB_REF/refs\/tags\/v/} \ | |
--os linux \ | |
--arch 386 | |
- name: Annotate ARM version | |
run: | | |
docker manifest annotate \ | |
containrrr/shoutrrr:${GITHUB_REF/refs\/tags\/v/} \ | |
containrrr/shoutrrr:armhf-${GITHUB_REF/refs\/tags\/v/} \ | |
--os linux \ | |
--arch arm | |
- name: Annotate ARM64 version | |
run: | | |
docker manifest annotate \ | |
containrrr/shoutrrr:${GITHUB_REF/refs\/tags\/v/} \ | |
containrrr/shoutrrr:arm64v8-${GITHUB_REF/refs\/tags\/v/} \ | |
--os linux \ | |
--arch arm64 \ | |
--variant v8 | |
- name: Create manifest for latest | |
run: | | |
docker manifest create \ | |
containrrr/shoutrrr:latest \ | |
containrrr/shoutrrr:amd64-latest \ | |
containrrr/shoutrrr:i386-latest \ | |
containrrr/shoutrrr:armhf-latest \ | |
containrrr/shoutrrr:arm64v8-latest | |
- name: Annotate i386 latest | |
run: | | |
docker manifest annotate \ | |
containrrr/shoutrrr:latest \ | |
containrrr/shoutrrr:i386-latest \ | |
--os linux \ | |
--arch 386 | |
- name: Annotate ARM latest | |
run: | | |
docker manifest annotate \ | |
containrrr/shoutrrr:latest \ | |
containrrr/shoutrrr:armhf-latest \ | |
--os linux \ | |
--arch arm | |
- name: Annotate ARM64 latest | |
run: | | |
docker manifest annotate \ | |
containrrr/shoutrrr:latest \ | |
containrrr/shoutrrr:arm64v8-latest \ | |
--os linux \ | |
--arch arm64 \ | |
--variant v8 | |
- name: Push manifests to Dockerhub | |
run: | | |
docker manifest push containrrr/shoutrrr:${GITHUB_REF/refs\/tags\/v/} && \ | |
docker manifest push containrrr/shoutrrr:latest | |
snap: | |
name: Build Shoutrrr snap | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v3 | |
name: Checkout repository | |
- uses: snapcore/action-build@v1 | |
name: Build snap | |
id: build | |
- uses: snapcore/action-publish@v1 | |
name: Release snap | |
env: | |
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }} | |
with: | |
snap: ${{ steps.build.outputs.snap }} | |
release: edge |