fetchcert/.forgejo/workflows/release.yaml
Emmanuel BENOîT 3b7757b1d9
All checks were successful
Run tests and linters / test (push) Successful in 42s
Run tests and linters / build (push) Successful in 41s
Run tests and linters / lint (push) Successful in 1m18s
chore: add support for build automation (#5)
This PR seeks to solve #2.

It adds a Makefile that can build, test, lint and package the code and the Forgejo workflows needed to automate the build. In addition, it resolves various issues highlighted by the linter.

Reviewed-on: #5
Co-authored-by: Emmanuel BENOÎT <tseeker@nocternity.net>
Co-committed-by: Emmanuel BENOÎT <tseeker@nocternity.net>
2024-07-26 14:07:46 +02:00

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