Files
GoTunnel/.gitea/workflows/build.yaml
Flik 3b7b51d734
All checks were successful
Build Multi-Platform Binaries / build (push) Successful in 21m23s
111
2025-12-26 19:57:31 +08:00

95 lines
2.9 KiB
YAML

name: Build Multi-Platform Binaries
on:
push:
paths:
- '**.go'
- 'go.mod'
- 'go.sum'
- 'web/**'
- '.gitea/workflows/**'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: '1.24'
cache: true
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: web/package-lock.json
- name: Build Frontend
run: |
cd web
npm ci
npm run build
- name: Copy Frontend to Embed Path
run: cp -r web/dist internal/server/app/dist
- name: Install UPX
run: |
sudo apt-get update
sudo apt-get install -y upx-ucl
- name: Build all platforms
run: |
mkdir -p dist
# Linux amd64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" \
-o dist/server-linux-amd64 ./cmd/server
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" \
-o dist/client-linux-amd64 ./cmd/client
# Linux arm64
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" \
-o dist/server-linux-arm64 ./cmd/server
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="-s -w" \
-o dist/client-linux-arm64 ./cmd/client
# Darwin amd64
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" \
-o dist/server-darwin-amd64 ./cmd/server
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="-s -w" \
-o dist/client-darwin-amd64 ./cmd/client
# Darwin arm64
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" \
-o dist/server-darwin-arm64 ./cmd/server
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w" \
-o dist/client-darwin-arm64 ./cmd/client
# Windows amd64
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" \
-o dist/server-windows-amd64.exe ./cmd/server
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" \
-o dist/client-windows-amd64.exe ./cmd/client
- name: Compress with UPX
run: |
# UPX 压缩 Linux 和 Windows 二进制 (macOS 不支持)
upx -9 dist/server-linux-amd64 dist/client-linux-amd64 || true
upx -9 dist/server-linux-arm64 dist/client-linux-arm64 || true
upx -9 dist/server-windows-amd64.exe dist/client-windows-amd64.exe || true
- name: List artifacts
run: ls -lah dist/
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: gotunnel-binaries
path: dist/