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