gomonop/.forgejo/workflows/release.yaml

52 lines
1.3 KiB
YAML

name: Build and upload project release
on:
create:
tags: [ v* ]
jobs:
release:
runs-on: debian-12
if: startsWith(github.ref, 'refs/tags/v')
steps:
-
name: Checkout repo
uses: actions/checkout@v4
-
name: Extract Go version
id: go-version
run: |
sed '/^go /!d; s/go /version=/' go.mod >>"$GITHUB_OUTPUT"
-
name: Extract release notes
id: release-notes
run: |
git fetch --depth=1 origin +refs/tags/*:refs/tags/*
TAG_DATA="$(git tag -l --format '%(contents:body)' "${GITHUB_REF#refs/tags/}")"
TAG_DATA="${TAG_DATA//'%'/'%25'}"
TAG_DATA="${TAG_DATA//$'\n'/'%0A'}"
TAG_DATA="${TAG_DATA//$'\r'/'%0D'}"
echo "::set-output name=content::${TAG_DATA}"
-
name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ steps.go-version.outputs.version }}
-
name: Run tests
run: |
make test
-
name: Build binaries
run: |
make dist-all
-
name: Upload release
uses: actions/forgejo-release@v1
with:
direction: upload
name: binaries
release-dir: dist/release
release-notes: ${{ steps.release-notes.outputs.content }}
token: ${{ secrets.FORGEJO_TOKEN }}