diff --git a/.github/workflows/Build-WeChatFerry.yml b/.github/workflows/Build-WeChatFerry.yml new file mode 100644 index 0000000..ab00da7 --- /dev/null +++ b/.github/workflows/Build-WeChatFerry.yml @@ -0,0 +1,118 @@ +name: Build-WeChatFerry + +on: + push: + branches: [master] + pull_request: + branches: [master] + workflow_dispatch: + inputs: + use_cache: + description: '是否使用缓存' + required: true + default: 'yes' + type: choice + options: + - 'yes' + - 'no' + build_configurations: + description: '编译配置(使用逗号分隔多个配置)' + required: true + default: 'Release,Debug' + type: string + + +jobs: + build: + runs-on: windows-latest + + steps: + - name: 检出代码 + uses: actions/checkout@v4 + + - name: 获取版本号和微信版本号 + run: | + $version = (Select-String -Path "WeChatFerry/spy/spy.rc" -Pattern 'VALUE "FileVersion", "(.*)"').Matches.Groups[1].Value.Trim() + $wechat_version = (Select-String -Path "WeChatFerry/spy/spy.rc" -Pattern 'VALUE "ProductVersion", "(.*)"').Matches.Groups[1].Value.Trim() + echo "version=$version" >> $env:GITHUB_ENV + echo "wechat_version=$wechat_version" >> $env:GITHUB_ENV + echo "Program Version: $version" + echo "WeChat Version: $wechat_version" + shell: pwsh + + - name: 设置 Visual Studio 2019 + uses: microsoft/setup-msbuild@v2 + with: + vs-version: '16.0' # 16.x 对应 Visual Studio 2019 + + - 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 + + - name: 设置缓存 + id: cache-dependencies + if: github.event.inputs.use_cache == 'yes' + uses: actions/cache@v4 + with: + path: | + C:/Tools/vcpkg + key: ${{ runner.os }}-dependencies-${{ hashFiles('**/WeChatFerry/spy/spy.rc') }} + restore-keys: | + ${{ runner.os }}-dependencies- + + + - name: 安装 vcpkg 和依赖项 + # if: steps.cache-dependencies.outputs.cache-hit != 'true' || github.event.inputs.use_cache == 'no' + run: | + cd C:/Tools + git clone https://github.com/microsoft/vcpkg + .\vcpkg\bootstrap-vcpkg.bat + .\vcpkg\vcpkg install protobuf[zlib]:x64-windows-static + .\vcpkg\vcpkg install spdlog:x64-windows-static + .\vcpkg\vcpkg install nng:x64-windows-static + .\vcpkg\vcpkg install magic-enum:x64-windows-static + .\vcpkg\vcpkg install minhook:x64-windows-static + .\vcpkg\vcpkg integrate install + echo "VCPKG_ROOT=C:/Tools/vcpkg" >> $GITHUB_ENV + + + + - name: 解析并构建配置 + run: | + $configurations = "${{ github.event.inputs.build_configurations }}".Split(',') + foreach ($config in $configurations) { + Write-Host "Building configuration: $config" + msbuild WeChatFerry/WeChatFerry.sln /p:Configuration=$config /p:Platform="x64" /verbosity:detailed + + } + shell: pwsh + + - name: 打包输出文件及下载 WeChat 安装包 + run: | + New-Item -ItemType Directory -Force -Path "WeChatFerry/tmp" + Compress-Archive -Path "WeChatFerry/Out/sdk.dll", "WeChatFerry/Out/spy.dll", "WeChatFerry/Out/spy_debug.dll" -DestinationPath "WeChatFerry/tmp/WeChatFerry-${{ env.version }}.zip" + # Compress-Archive -Path "WeChatFerry/Out/*" -DestinationPath "WeChatFerry/tmp/WeChatFerry-${{ env.version }}.zip" + Invoke-WebRequest -Uri "https://github.com/tom-snow/wechat-windows-versions/releases/download/v${{ env.wechat_version }}/WeChatSetup-${{ env.wechat_version }}.exe" -OutFile "WeChatFerry/tmp/WeChatSetup-${{ env.wechat_version }}.exe" + shell: pwsh + + - name: 列出预发布文件 + run: | + Get-ChildItem -Path "WeChatFerry/tmp" -Recurse + + - name: 发布固件到 Github Releases + uses: ncipollo/release-action@main + with: + name: WeChatFerry_v${{ env.version }} + tag: v${{ env.version }} + token: ${{ secrets.REPO_TOKEN }} + allowUpdates: true + artifacts: "WeChatFerry/tmp/*" + body: | + 程序版本:${{ env.version }} + 配套微信版本:${{ env.wechat_version }}