committed by
GitHub
1 changed files with 146 additions and 0 deletions
@ -0,0 +1,146 @@ |
|||
name: Release |
|||
|
|||
on: |
|||
push: |
|||
# Trigger on tag pushes. Adjust pattern as needed (e.g. 'v*.*.*') |
|||
tags: |
|||
- '**' |
|||
workflow_dispatch: |
|||
|
|||
jobs: |
|||
build: |
|||
name: Build binaries |
|||
runs-on: ubuntu-latest |
|||
strategy: |
|||
matrix: |
|||
include: |
|||
- goos: linux |
|||
goarch: amd64 |
|||
cgo: 0 |
|||
- goos: linux |
|||
goarch: arm64 |
|||
cgo: 0 |
|||
- goos: linux |
|||
goarch: 386 |
|||
cgo: 0 |
|||
- goos: linux |
|||
goarch: arm |
|||
goarm: '7' |
|||
cgo: 0 |
|||
- goos: darwin |
|||
goarch: amd64 |
|||
cgo: 0 |
|||
- goos: darwin |
|||
goarch: arm64 |
|||
cgo: 0 |
|||
- goos: windows |
|||
goarch: amd64 |
|||
cgo: 0 |
|||
- goos: windows |
|||
goarch: 386 |
|||
cgo: 0 |
|||
- goos: android |
|||
goarch: arm64 |
|||
cgo: 1 |
|||
api: 21 |
|||
- goos: freebsd |
|||
goarch: amd64 |
|||
cgo: 0 |
|||
|
|||
steps: |
|||
- name: Check out code |
|||
uses: actions/checkout@v6 |
|||
|
|||
- name: Set up Go |
|||
uses: actions/setup-go@v6 |
|||
with: |
|||
go-version: '1.25.5' |
|||
|
|||
# Install Android NDK only for android rows |
|||
- name: Setup Android NDK |
|||
if: matrix.goos == 'android' |
|||
id: setup-ndk |
|||
uses: nttld/setup-ndk@v1 |
|||
with: |
|||
ndk-version: r26d |
|||
add-to-path: false |
|||
|
|||
- name: Build |
|||
env: |
|||
GOOS: ${{ matrix.goos }} |
|||
GOARCH: ${{ matrix.goarch }} |
|||
GOARM: ${{ matrix.goarm }} |
|||
CGO_ENABLED: ${{ matrix.cgo }} |
|||
ANDROID_API: ${{ matrix.api }} |
|||
ANDROID_NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }} |
|||
VERSION: ${{ github.ref_name }} |
|||
run: | |
|||
echo "Building for $GOOS/$GOARCH${GOARM:+/arm$GOARM} (CGO_ENABLED=$CGO_ENABLED)" |
|||
|
|||
if [ "$GOOS" = "android" ]; then |
|||
if [ -z "$ANDROID_NDK_HOME" ]; then |
|||
echo "ANDROID_NDK_HOME is not set – did setup-ndk run?" |
|||
exit 1 |
|||
fi |
|||
|
|||
TOOLCHAIN_BIN="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin" |
|||
|
|||
if [ "$GOARCH" = "arm64" ]; then |
|||
export CC="$TOOLCHAIN_BIN/aarch64-linux-android${ANDROID_API}-clang" |
|||
else |
|||
echo "Unsupported ANDROID GOARCH=$GOARCH" |
|||
exit 1 |
|||
fi |
|||
|
|||
echo "Using Android NDK CC=$CC" |
|||
fi |
|||
|
|||
mkdir -p dist |
|||
|
|||
# Set extension for windows |
|||
if [ "${GOOS}" = "windows" ]; then |
|||
EXT=.exe |
|||
else |
|||
EXT= |
|||
fi |
|||
|
|||
GOOS=$GOOS GOARCH=$GOARCH GOARM=$GOARM \ |
|||
go build -ldflags "-s -w -checklinkname=0" -trimpath \ |
|||
-o "dist/client-${GOOS}-${GOARCH}${EXT}" \ |
|||
./client |
|||
|
|||
GOOS=$GOOS GOARCH=$GOARCH GOARM=$GOARM \ |
|||
go build -ldflags "-s -w -checklinkname=0" -trimpath \ |
|||
-o "dist/server-${GOOS}-${GOARCH}${EXT}" \ |
|||
./server |
|||
|
|||
- name: Upload artifact |
|||
uses: actions/upload-artifact@v6 |
|||
with: |
|||
name: good-turn-${{ matrix.goos }}-${{ matrix.goarch }} |
|||
path: dist/** |
|||
|
|||
release: |
|||
name: Create GitHub Release |
|||
needs: build |
|||
runs-on: ubuntu-latest |
|||
permissions: |
|||
contents: write |
|||
steps: |
|||
- name: Download build artifacts |
|||
uses: actions/download-artifact@v7 |
|||
with: |
|||
path: dist |
|||
|
|||
- name: Create Release |
|||
uses: softprops/action-gh-release@v2 |
|||
with: |
|||
# upload every file in dist/ including nested files |
|||
files: | |
|||
dist/** |
|||
# make the release name/tag the pushed tag |
|||
tag_name: ${{ github.ref_name }} |
|||
name: ${{ github.ref_name }} |
|||
overwrite_files: true |
|||
env: |
|||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|||
Loading…
Reference in new issue