diff --git a/.forgejo/workflows/release.yaml b/.forgejo/workflows/release.yaml new file mode 100644 index 0000000..e2c7336 --- /dev/null +++ b/.forgejo/workflows/release.yaml @@ -0,0 +1,52 @@ +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 }}