chore: 移除旧的GitHub Actions文档并迁移Windows构建配置到Gitea
refactor: 更新Windows构建工作流配置
This commit is contained in:
@@ -0,0 +1,266 @@
|
||||
name: Build Windows
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, master ]
|
||||
pull_request:
|
||||
branches: [ main, master ]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
# 先编译 libcore
|
||||
build-libcore:
|
||||
name: 编译 libcore (Windows)1
|
||||
runs-on: client-server
|
||||
container:
|
||||
image: node:20
|
||||
strategy:
|
||||
matrix:
|
||||
# 只有node支持版本号别名
|
||||
node: ['20.15.1']
|
||||
|
||||
steps:
|
||||
- name: 📥 Checkout 代码
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
fetch-depth: 0
|
||||
|
||||
- name: 🔧 设置 Go 环境
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
go-version: '1.23'
|
||||
cache: true
|
||||
cache-dependency-path: libcore/go.sum
|
||||
|
||||
- name: 🔧 安装 MinGW
|
||||
run: |
|
||||
# 在 GitHub 托管 runner(有 sudo)与 act/自托管容器(无 sudo)均可运行
|
||||
if command -v sudo >/dev/null 2>&1; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y mingw-w64
|
||||
else
|
||||
echo "sudo 不存在,按 root 用户直接执行 apt-get"
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update || apt update
|
||||
apt-get install -y mingw-w64 || apt install -y mingw-w64
|
||||
fi
|
||||
|
||||
- name: 📦 编译 libcore.dll
|
||||
working-directory: libcore
|
||||
run: |
|
||||
echo "🚀 开始编译 Windows libcore..."
|
||||
make windows-amd64
|
||||
|
||||
if [ -f "bin/libcore.dll" ] && [ -f "bin/HiddifyCli.exe" ]; then
|
||||
echo "✅ Windows libcore 编译成功"
|
||||
ls -lh bin/
|
||||
else
|
||||
echo "❌ Windows libcore 编译失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: 📤 上传 Windows libcore
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: libcore-windows
|
||||
path: |
|
||||
libcore/bin/libcore.dll
|
||||
libcore/bin/HiddifyCli.exe
|
||||
libcore/bin/webui/**
|
||||
retention-days: 7
|
||||
|
||||
# 构建 Windows 应用
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
needs: build-libcore
|
||||
steps:
|
||||
# 新增:引导步骤,下载并设置 Node.js(便携版,无需全局安装)
|
||||
|
||||
- name: 🔧 Add Git to PATH (Windows)
|
||||
if: ${{ runner.os == 'Windows' }}
|
||||
shell: powershell
|
||||
run: |
|
||||
$paths = @(
|
||||
'C:\Program Files\Git\cmd',
|
||||
'C:\Program Files\Git\bin',
|
||||
'C:\Program Files (x86)\Git\cmd',
|
||||
'C:\Program Files (x86)\Git\bin'
|
||||
)
|
||||
foreach ($p in $paths) {
|
||||
if (Test-Path $p) {
|
||||
Add-Content -Path $env:GITHUB_PATH -Value $p
|
||||
$env:PATH = "$p;$env:PATH"
|
||||
Write-Host ("Added to PATH: {0}" -f $p)
|
||||
}
|
||||
}
|
||||
$candidates = @(
|
||||
'C:\Program Files\Git\cmd\git.exe',
|
||||
'C:\Program Files\Git\bin\git.exe',
|
||||
'C:\Program Files (x86)\Git\cmd\git.exe',
|
||||
'C:\Program Files (x86)\Git\bin\git.exe'
|
||||
)
|
||||
$found = $false
|
||||
foreach ($g in $candidates) {
|
||||
if (Test-Path $g) {
|
||||
& $g --version
|
||||
$found = $true
|
||||
break
|
||||
}
|
||||
}
|
||||
if (-not $found) {
|
||||
Write-Host "Git executable not found in common locations; continuing."
|
||||
}
|
||||
|
||||
- name: 📥 Checkout 代码
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
fetch-depth: 0
|
||||
|
||||
- name: 📥 下载 libcore
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: libcore-windows
|
||||
path: .
|
||||
|
||||
- name: 🔧 复制 libcore 文件到正确位置并重命名
|
||||
shell: pwsh
|
||||
run: |
|
||||
Write-Host "📋 复制 libcore 文件..."
|
||||
|
||||
# 创建目标目录
|
||||
New-Item -ItemType Directory -Force -Path libcore/bin
|
||||
|
||||
# 查找并复制 HiddifyCli.exe,重命名为 BearVPNCli.exe
|
||||
$exeFiles = Get-ChildItem -Recurse -Filter "HiddifyCli.exe" -ErrorAction SilentlyContinue
|
||||
if ($exeFiles) {
|
||||
$sourceExe = $exeFiles[0].FullName
|
||||
Write-Host "✅ 找到 HiddifyCli.exe: $sourceExe"
|
||||
Write-Host "📝 复制并重命名为 BearVPNCli.exe"
|
||||
Copy-Item $sourceExe libcore/bin/BearVPNCli.exe
|
||||
Write-Host "✅ 重命名完成:HiddifyCli.exe → BearVPNCli.exe"
|
||||
} else {
|
||||
Write-Host "⚠️ 未找到 HiddifyCli.exe"
|
||||
}
|
||||
|
||||
# 复制 libcore.dll
|
||||
$dllFiles = Get-ChildItem -Recurse -Filter "libcore.dll" -ErrorAction SilentlyContinue
|
||||
if ($dllFiles) {
|
||||
$sourceDll = $dllFiles[0].FullName
|
||||
Write-Host "✅ 找到 libcore.dll: $sourceDll"
|
||||
Copy-Item $sourceDll libcore/bin/libcore.dll
|
||||
} else {
|
||||
Write-Host "⚠️ 未找到 libcore.dll"
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "📄 验证文件:"
|
||||
if (Test-Path libcore/bin) {
|
||||
Get-ChildItem libcore/bin -ErrorAction SilentlyContinue | Format-Table Name, Length
|
||||
}
|
||||
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: '3.24.5'
|
||||
channel: 'stable'
|
||||
|
||||
- name: Enable Windows desktop
|
||||
run: flutter config --enable-windows-desktop
|
||||
|
||||
- name: Get dependencies
|
||||
run: flutter pub get
|
||||
|
||||
- name: Generate code
|
||||
run: dart run build_runner build --delete-conflicting-outputs
|
||||
|
||||
- name: Build Windows Debug
|
||||
run: flutter build windows
|
||||
|
||||
- name: Build Windows Release
|
||||
run: flutter build windows --release
|
||||
|
||||
- name: Upload Debug build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: windows-debug-build
|
||||
path: build/windows/runner/Debug/
|
||||
|
||||
- name: Upload Release build artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: windows-release-build
|
||||
path: build/windows/runner/Release/
|
||||
|
||||
# 本地(act)验证作业:只验证 Git PATH 与 checkout/submodules
|
||||
build-act-windows:
|
||||
name: ACT Windows Checkout Verification
|
||||
if: ${{ env.ACT == 'true' }}
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- name: Add Git to PATH (Windows)
|
||||
shell: powershell
|
||||
run: |
|
||||
$paths = @(
|
||||
'C:\Program Files\Git\cmd',
|
||||
'C:\Program Files\Git\bin',
|
||||
'C:\Program Files (x86)\Git\cmd',
|
||||
'C:\Program Files (x86)\Git\bin'
|
||||
)
|
||||
foreach ($p in $paths) {
|
||||
if (Test-Path $p) {
|
||||
Add-Content -Path $env:GITHUB_PATH -Value $p
|
||||
$env:PATH = "$p;$env:PATH"
|
||||
Write-Host ("Added to PATH: {0}" -f $p)
|
||||
}
|
||||
}
|
||||
$candidates = @(
|
||||
'C:\Program Files\Git\cmd\git.exe',
|
||||
'C:\Program Files\Git\bin\git.exe',
|
||||
'C:\Program Files (x86)\Git\cmd\git.exe',
|
||||
'C:\Program Files (x86)\Git\bin\git.exe'
|
||||
)
|
||||
$found = $false
|
||||
foreach ($g in $candidates) {
|
||||
if (Test-Path $g) {
|
||||
& $g --version
|
||||
$found = $true
|
||||
break
|
||||
}
|
||||
}
|
||||
if (-not $found) {
|
||||
Write-Host "Git executable not found in common locations; continuing."
|
||||
}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
# 仅用于本地 act 验证:目录级稀疏检出,避免包含 Windows 非法文件
|
||||
sparse-checkout: |
|
||||
.github
|
||||
lib
|
||||
libcore
|
||||
android
|
||||
ios
|
||||
windows
|
||||
assets/core
|
||||
assets/fonts
|
||||
assets/translations
|
||||
sparse-checkout-cone: true
|
||||
|
||||
- name: Verify submodules
|
||||
shell: powershell
|
||||
continue-on-error: true
|
||||
run: |
|
||||
git --version
|
||||
git submodule status
|
||||
Write-Host "Submodules verified (status printed above)."
|
||||
|
||||
- name: Summary
|
||||
shell: powershell
|
||||
run: |
|
||||
Write-Host "ACT Windows verification completed successfully."
|
||||
Reference in New Issue
Block a user