Skip to content

refactor: consolidate public IP STUN queries #20

refactor: consolidate public IP STUN queries

refactor: consolidate public IP STUN queries #20

Workflow file for this run

name: Build Release
on:
push:
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
env:
R2_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_R2_ACCOUNT_ID }}
R2_ACCESS_KEY_ID: ${{ secrets.CLOUDFLARE_R2_ACCESS_KEY_ID }}
R2_SECRET_ACCESS_KEY: ${{ secrets.CLOUDFLARE_R2_SECRET_ACCESS_KEY }}
R2_BUCKET: ${{ secrets.CLOUDFLARE_R2_BUCKET }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_PAGES_PROJECT_NAME: ${{ secrets.CLOUDFLARE_PAGES_PROJECT_NAME }}
CLOUDFLARE_PAGES_BRANCH: ${{ vars.CLOUDFLARE_PAGES_BRANCH }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.24.3'
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Build binaries
env:
LDFLAGS: "-s -w -buildid= -checklinkname=0"
BUILD_FLAGS: "-buildvcs=false -trimpath"
CGO_ENABLED: "0"
run: |
mkdir -p bin
# Windows
GOOS=windows GOARCH=amd64 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_windows_amd64.exe .
GOOS=windows GOARCH=arm64 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_windows_arm64.exe .
cp bin/gonc_windows_amd64.exe bin/gonc.exe
cp bin/gonc_windows_arm64.exe bin/gonc_arm64.exe
# Darwin (macOS)
GOOS=darwin GOARCH=amd64 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_darwin_amd64 .
GOOS=darwin GOARCH=arm64 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_darwin_arm64 .
# Linux Common (PC & 64-bit ARM)
GOOS=linux GOARCH=amd64 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_linux_amd64 .
GOOS=linux GOARCH=386 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_linux_386 .
GOOS=linux GOARCH=arm64 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_linux_arm64 .
# Linux ARM 32-bit (精细化区分 v5 和 v7 软/硬浮点)
GOOS=linux GOARCH=arm GOARM=5 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_linux_armv5 .
GOOS=linux GOARCH=arm GOARM=7,softfloat go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_linux_armv7_softfloat .
GOOS=linux GOARCH=arm GOARM=7 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_linux_armv7hf .
# Linux MIPS (Routers / 软路由)
GOOS=linux GOARCH=mips GOMIPS=softfloat go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_linux_mips .
GOOS=linux GOARCH=mipsle GOMIPS=softfloat go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_linux_mipsle .
GOOS=linux GOARCH=mips64 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_linux_mips64 .
# Android
GOOS=android GOARCH=arm64 go build $BUILD_FLAGS -ldflags="$LDFLAGS" -o bin/gonc_android_arm64 .
- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: bin/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload binaries to Cloudflare R2
if: ${{ env.R2_ACCOUNT_ID != '' && env.R2_ACCESS_KEY_ID != '' && env.R2_SECRET_ACCESS_KEY != '' && env.R2_BUCKET != '' }}
env:
AWS_ACCESS_KEY_ID: ${{ env.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ env.R2_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: auto
run: |
aws s3 sync bin/ "s3://${R2_BUCKET}/${GITHUB_REF_NAME}/" \
--endpoint-url "https://${R2_ACCOUNT_ID}.r2.cloudflarestorage.com" \
--delete
- name: Build Cloudflare Pages package
run: |
python -m pip install --upgrade pip
python -m pip install mkdocs-material
mkdocs build
GONC_VERSION="${GITHUB_REF_NAME}" python build_page.py
rm -rf page_dist
mkdir -p page_dist
unzip -q "bin/deploy_${GITHUB_REF_NAME}.zip" -d page_dist
- name: Deploy to Cloudflare Pages
if: ${{ env.CLOUDFLARE_API_TOKEN != '' && env.CLOUDFLARE_PAGES_PROJECT_NAME != '' && env.R2_ACCOUNT_ID != '' }}
env:
CLOUDFLARE_ACCOUNT_ID: ${{ env.R2_ACCOUNT_ID }}
run: |
PAGES_BRANCH="${CLOUDFLARE_PAGES_BRANCH:-main}"
npx --yes wrangler@latest pages deploy page_dist \
--project-name "$CLOUDFLARE_PAGES_PROJECT_NAME" \
--branch "$PAGES_BRANCH" \
--commit-dirty=true