Some checks failed
release / release-linux (push) Failing after 1m23s
release / release-darwin (push) Has been skipped
release / release-containers (false, debian) (push) Failing after 1m45s
release / release-containers (false, ubuntu) (push) Failing after 21s
release / release-containers (true, alpine) (push) Failing after 22s
release / release-containers (false, scratch) (push) Failing after 1m51s
127 lines
3.4 KiB
YAML
127 lines
3.4 KiB
YAML
name: release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*"
|
|
|
|
permissions:
|
|
contents: write
|
|
packages: write
|
|
|
|
jobs:
|
|
release-linux:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: actions/setup-go@v6
|
|
with:
|
|
go-version: "1.25.0"
|
|
|
|
- name: release linux
|
|
uses: goreleaser/goreleaser-action@v6
|
|
with:
|
|
version: "~> v2"
|
|
args: release --clean
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
AUR_KEY: ${{ secrets.AUR_KEY }}
|
|
|
|
release-darwin:
|
|
needs: release-linux
|
|
runs-on: macos-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: actions/setup-go@v6
|
|
with:
|
|
go-version: "1.25.0"
|
|
|
|
- name: release darwin
|
|
uses: goreleaser/goreleaser-action@v6
|
|
with:
|
|
version: "~> v2"
|
|
args: release --clean --config .goreleaser-darwin.yaml --skip=validate
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
release-containers:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
variant: [alpine, debian, ubuntu, scratch]
|
|
include:
|
|
- variant: alpine
|
|
is_default: true
|
|
- variant: debian
|
|
is_default: false
|
|
- variant: ubuntu
|
|
is_default: false
|
|
- variant: scratch
|
|
is_default: false
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: DeterminateSystems/nix-installer-action@v17
|
|
|
|
- uses: nix-community/cache-nix-action@v6
|
|
with:
|
|
primary-key: nix-${{ runner.os }}-${{ hashFiles('flake.lock') }}
|
|
restore-prefixes-first-match: nix-${{ runner.os }}-
|
|
|
|
- name: login to ghcr
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: build container
|
|
run: nix build ".#snitch-${{ matrix.variant }}" --print-out-paths
|
|
|
|
- name: load and push container
|
|
env:
|
|
VERSION: ${{ github.ref_name }}
|
|
REPO: ghcr.io/${{ github.repository_owner }}/snitch
|
|
VARIANT: ${{ matrix.variant }}
|
|
IS_DEFAULT: ${{ matrix.is_default }}
|
|
run: |
|
|
VERSION="${VERSION#v}"
|
|
|
|
docker load < result
|
|
|
|
IMAGE_TAG=$(docker images --format '{{.Repository}}:{{.Tag}}' | grep "snitch:.*-${VARIANT}" | head -1)
|
|
|
|
if [ -z "$IMAGE_TAG" ]; then
|
|
echo "error: could not find loaded image for ${VARIANT}"
|
|
exit 1
|
|
fi
|
|
|
|
docker tag "$IMAGE_TAG" "${REPO}:${VERSION}-${VARIANT}"
|
|
docker tag "$IMAGE_TAG" "${REPO}:latest-${VARIANT}"
|
|
docker push "${REPO}:${VERSION}-${VARIANT}"
|
|
docker push "${REPO}:latest-${VARIANT}"
|
|
|
|
if [ "$IS_DEFAULT" = "true" ]; then
|
|
docker tag "$IMAGE_TAG" "${REPO}:${VERSION}"
|
|
docker tag "$IMAGE_TAG" "${REPO}:latest"
|
|
docker push "${REPO}:${VERSION}"
|
|
docker push "${REPO}:latest"
|
|
fi
|
|
|
|
- name: summary
|
|
env:
|
|
VERSION: ${{ github.ref_name }}
|
|
REPO: ghcr.io/${{ github.repository_owner }}/snitch
|
|
VARIANT: ${{ matrix.variant }}
|
|
run: |
|
|
VERSION="${VERSION#v}"
|
|
echo "pushed ${REPO}:${VERSION}-${VARIANT}" >> $GITHUB_STEP_SUMMARY
|