Skip to content

chore(ci): fix release CI job #36

chore(ci): fix release CI job

chore(ci): fix release CI job #36

Workflow file for this run

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 --clean
- 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