87 lines
2.5 KiB
YAML
87 lines
2.5 KiB
YAML
name: Build CI
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
jobs:
|
|
build:
|
|
name: 编译校验
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: 检出代码
|
|
uses: actions/checkout@v4
|
|
|
|
- name: 设置 Visual Studio 2019
|
|
uses: microsoft/setup-msbuild@v2
|
|
with:
|
|
vs-version: "16.0"
|
|
|
|
- name: 设置 Python 3
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.9"
|
|
|
|
- name: 安装 Python 依赖项
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install grpcio-tools==1.48.2
|
|
shell: pwsh
|
|
|
|
- name: 设置 vcpkg 缓存
|
|
id: cache-vcpkg
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
C:/Tools/vcpkg
|
|
${{ github.workspace }}/WeChatFerry/vcpkg_installed
|
|
key: vcpkg-${{ hashFiles('WeChatFerry/vcpkg.json') }}
|
|
restore-keys: |
|
|
vcpkg-
|
|
|
|
- name: Clone & bootstrap vcpkg (首次或缓存失效时)
|
|
if: steps.cache-vcpkg.outputs.cache-hit != 'true'
|
|
shell: pwsh
|
|
run: |
|
|
if (!(Test-Path 'C:/Tools')) { New-Item -ItemType Directory -Force -Path 'C:/Tools' | Out-Null }
|
|
cd C:/Tools
|
|
git clone --single-branch https://github.com/microsoft/vcpkg vcpkg
|
|
$retry = 0
|
|
while ($retry -lt 3) {
|
|
try { .\vcpkg\bootstrap-vcpkg.bat -disableMetrics ; break }
|
|
catch { $retry++; if ($retry -ge 3) { throw }; Write-Host "bootstrap 失败,重试第 $retry 次..." ; Start-Sleep 15 }
|
|
}
|
|
|
|
- name: 设置 VCPKG_ROOT
|
|
shell: pwsh
|
|
run: |
|
|
"VCPKG_ROOT=C:/Tools/vcpkg" | Out-File $Env:GITHUB_ENV -Encoding utf8 -Append
|
|
|
|
- name: 安装/更新第三方依赖
|
|
shell: pwsh
|
|
run: |
|
|
cd ${{ github.workspace }}/WeChatFerry
|
|
C:/Tools/vcpkg/vcpkg install --triplet x64-windows-static
|
|
C:/Tools/vcpkg/vcpkg integrate install
|
|
|
|
- name: 解析并构建 Release/Debug
|
|
run: |
|
|
$configs = "Release","Debug"
|
|
foreach ($cfg in $configs) {
|
|
Write-Host "Building $cfg"
|
|
msbuild WeChatFerry/WeChatFerry.sln `
|
|
/p:Configuration=$cfg `
|
|
/p:Platform="x64" `
|
|
/p:VcpkgTriplet="x64-windows-static" `
|
|
/p:VcpkgEnableManifest=true `
|
|
/verbosity:minimal
|
|
}
|
|
shell: pwsh
|
|
|
|
- name: 上传
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: wechatferry-binaries
|
|
path: |
|
|
WeChatFerry/Out/*.dll
|
|
WeChatFerry/Out/*.md
|