Files
GoTunnel/.gitea/workflows/build.yaml
flik 444d2b0a97
Some checks failed
Build Multi-Platform Binaries / prepare-all (push) Successful in 45s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, client, false) (push) Successful in 49s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Has been cancelled
更新 .gitea/workflows/build.yaml
2025-12-27 00:41:37 +08:00

100 lines
3.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Build Multi-Platform Binaries
on:
push:
paths:
- '**.go'
- 'go.mod'
- 'go.sum'
- 'web/**'
- '.gitea/workflows/**'
jobs:
prepare-all:
runs-on: node-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Build Frontend
run: |
cd web
npm ci
npm run build
- name: Move Frontend to Go Folder
run: |
# 1. 确保目标目录存在
mkdir -p internal/server/app/dist
# 2. 拷贝构建好的静态资源
cp -r web/dist/* internal/server/app/dist/
# 3. 【关键步骤】删除 node_modules避免它们被上传
rm -rf web/node_modules
# 4. (可选) 如果你不需要 web 源码,也可以删掉源码目录只留 dist
# rm -rf web/src
- name: Upload Integrated Workspace
uses: actions/upload-artifact@v3
with:
name: full-workspace
# 依然上传根目录,但此时 node_modules 已经没了
path: .
retention-days: 1
build-binaries:
needs: prepare-all
runs-on: golang-latest
strategy:
max-parallel: 2 # 极其重要:在 v3 且服务器不稳的情况下,建议限制到 2 个并发
matrix:
include:
- { goos: linux, goarch: amd64, target: server, upx: true }
- { goos: linux, goarch: amd64, target: client, upx: true }
- { goos: linux, goarch: arm64, target: server, upx: true }
- { goos: linux, goarch: arm64, target: client, upx: true }
- { goos: darwin, goarch: amd64, target: server, upx: false }
- { goos: darwin, goarch: amd64, target: client, upx: false }
- { goos: windows, goarch: amd64, target: server, upx: true }
- { goos: windows, goarch: amd64, target: client, upx: true }
# (根据需要缩减或保留 matrix)
steps:
- name: Install Node.js
run: |
if command -v apk > /dev/null; then
apk add --no-cache nodejs
elif command -v apt-get > /dev/null; then
apt-get update && apt-get install -y nodejs
fi
- name: Set Node IPv4 Priority
run: echo "NODE_OPTIONS=--dns-result-order=ipv4first" >> $GITHUB_ENV
- name: Download Workspace
uses: actions/download-artifact@v3
with:
name: full-workspace
path: .
- name: Build Binary
env:
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
CGO_ENABLED: 0
run: |
OUTPUT_NAME="${{ matrix.target }}-${{ matrix.goos }}-${{ matrix.goarch }}"
if [ "${{ matrix.goos }}" = "windows" ]; then
OUTPUT_NAME="${OUTPUT_NAME}.exe"
fi
go build -ldflags="-s -w" -o "${OUTPUT_NAME}" ./cmd/${{ matrix.target }}
echo "BINARY_NAME=${OUTPUT_NAME}" >> $GITHUB_ENV
- name: Install and Run UPX
if: matrix.upx == true
run: |
(apk add --no-cache upx || apt-get update && apt-get install -y upx-ucl)
upx -9 "${{ env.BINARY_NAME }}" || true
- name: Upload Binary
uses: actions/upload-artifact@v3
with:
name: ${{ env.BINARY_NAME }}
path: ${{ env.BINARY_NAME }}