chore: add release workflow

This commit is contained in:
Emmanuel BENOîT 2024-07-19 17:48:13 +02:00
parent 3021ab8896
commit c0cbb5d6c3
Signed by: Emmanuel BENOîT
SSH key fingerprint: SHA256:l7PFUUF5TCDsvYeQC9OnTNz08dFY7Fvf4Hv3neIqYpg
3 changed files with 48 additions and 8 deletions

View file

@ -24,10 +24,6 @@ jobs:
uses: actions/setup-go@v5
with:
go-version: ${{ steps.go-version.outputs.version }}
-
name: Build for host architecture
run: |
make build
-
name: Run tests
run: |

View file

@ -0,0 +1,41 @@
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: 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
token: ${{ secrets.FORGEJO_TOKEN }}

View file

@ -71,13 +71,16 @@ dist: dist-target
.PHONY: dist-all
dist-all: dist-source
@for target in $(TARGETS); do \
@set -eu -o pipefail; \
for target in $(TARGETS); do \
$(MAKE) dist-target GOOS=`echo $$target | cut -d / -f 1` GOARCH=`echo $$target | cut -d / -f 2`; \
done
done; \
mkdir -p $(DISTDIR)/release; \
mv $(DISTDIR)/$(BINNAME)-$(BINARY_VERSION)-*.tar.xz $(DISTDIR)/release
.PHONY: dist-source
dist-source:
@set -e; \
@set -eu -o pipefail; \
if [ -z "$(BINARY_VERSION)" ]; then \
echo "No version set"; \
exit 1; \
@ -98,7 +101,7 @@ dist-source:
.PHONY: dist-target
dist-target: build-target
@set -e; \
@set -eu -o pipefail; \
if [ -z "$(BINARY_VERSION)" ]; then \
echo "No version set"; \
exit 1; \