fix(WeaselServer): WinSparkle will always open ReleaseNoteUrl in default browser, bundled it with patch #9
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - '*' | |
| tags: | |
| - '[0-9]+.*' | |
| pull_request: | |
| workflow_dispatch: | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout last commit | |
| uses: actions/checkout@v4 | |
| - name: Install clang-format 18 | |
| if: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
| run: | | |
| wget https://apt.llvm.org/llvm-snapshot.gpg.key | |
| sudo gpg --dearmor < llvm-snapshot.gpg.key > /usr/share/keyrings/llvm-archive-keyring.gpg | |
| echo "deb [signed-by=/usr/share/keyrings/llvm-archive-keyring.gpg] http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main" | sudo tee /etc/apt/sources.list.d/llvm-toolchain-jammy-18.list | |
| sudo apt-get update | |
| sudo apt-get install -y clang-format-18 | |
| sudo ln -sf /usr/bin/clang-format-18 /usr/local/bin/clang-format | |
| clang-format --version | |
| - name: Code style lint | |
| if: ${{ !startsWith(github.ref, 'refs/tags/') }} | |
| shell: bash | |
| run: ./clang-format.sh -i | |
| build: | |
| needs: lint | |
| runs-on: windows-2022 | |
| env: | |
| boost_version: 1.84.0 | |
| BOOST_ROOT: ${{ github.workspace }}\deps\boost_1_84_0 | |
| SDKVER: 10.0.19041.0 | |
| strategy: | |
| matrix: | |
| variant: [msbuild, xmake] | |
| steps: | |
| - name: Checkout last commit | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| - name: Fetch all tags | |
| run: git fetch --tags | |
| - name: Configure build environment | |
| shell: bash | |
| run: | | |
| cp env.vs2022.bat env.bat | |
| echo git_ref_name="$(git describe --always)" >> $GITHUB_ENV | |
| - name: Cache Boost | |
| id: cache-boost | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ${{ env.BOOST_ROOT }} | |
| key: ${{ runner.os }}-boost-${{ env.boost_version }} | |
| - name: Install Boost | |
| if: steps.cache-boost.outputs.cache-hit != 'true' | |
| shell: bash | |
| run: | | |
| ./install_boost.bat | |
| ./build.bat boost arm64 | |
| - uses: ilammy/msvc-dev-cmd@v1 | |
| with: | |
| sdk: ${{ env.SDKVER }} | |
| # bundled winsparkle v0.9.2 to disable auto open ReleaseNoteUrl in default browser | |
| - name: cache bundled winsparkle | |
| id: cache-winsparkle | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ${{ github.workspace }}\winsparkle\x64\Release\WinSparkle.dll | |
| ${{ github.workspace }}\winsparkle\x64\Release\WinSparkle.lib | |
| ${{ github.workspace }}\winsparkle\Release\WinSparkle.dll | |
| ${{ github.workspace }}\winsparkle\Release\WinSparkle.lib | |
| key: ${{ runner.os }}-winsparkle-v0.9.2-bundled | |
| restore-keys: | | |
| winsparkle-v0.9.2-bundled | |
| - name: Build bundled winsparkle | |
| if: steps.cache-winsparkle.outputs.cache-hit != 'true' | |
| shell: pwsh | |
| run: | | |
| $ErrorActionPreference = 'Stop' | |
| if (Test-Path winsparkle) { Remove-Item -Recurse -Force winsparkle } | |
| # Clone winsparkle repo v0.9.2 | |
| git clone https://github.com/vslavik/winsparkle.git -b v0.9.2 --depth 1 | |
| cd winsparkle | |
| git submodule update --init --recursive | |
| copy ..\bundled_winsparkle.patch . | |
| git apply bundled_winsparkle.patch | |
| nuget restore | |
| msbuild -m -t:Build -p:Configuration=Release -p:Platform=x64 WinSparkle.sln | |
| msbuild -m -t:Build -p:Configuration=Release -p:Platform=Win32 WinSparkle.sln | |
| - name: Install WinSparkle files | |
| shell: pwsh | |
| run: | | |
| $ErrorActionPreference = 'Stop' | |
| copy .\winsparkle\x64\Release\WinSparkle.dll .\output\ | |
| copy .\winsparkle\x64\Release\WinSparkle.lib .\lib64\ | |
| copy .\winsparkle\Release\WinSparkle.dll .\output\Win32\ | |
| copy .\winsparkle\Release\WinSparkle.lib .\lib\ | |
| - name: Get Rime files | |
| shell: pwsh | |
| run: | | |
| $ErrorActionPreference = 'Stop' | |
| .\get-rime.ps1 -use dev | |
| - name: Build data | |
| shell: pwsh | |
| run: | | |
| $ErrorActionPreference = 'Stop' | |
| .\build.bat data | |
| - name: Setup xmake | |
| if: matrix.variant == 'xmake' | |
| uses: xmake-io/github-action-setup-xmake@v1 | |
| - name: Build Weasel | |
| shell: pwsh | |
| id: build_weasel | |
| env: | |
| RELEASE_BUILD: ${{ (github.repository == 'rime/weasel' && startsWith(github.ref, 'refs/tags/')) && '1' || '' }} | |
| run: | | |
| $ErrorActionPreference = 'Stop' | |
| if ('${{ matrix.variant }}' -eq 'msbuild') { | |
| .\build.bat arm64 installer | |
| } else { | |
| .\xbuild.bat arm64 installer | |
| } | |
| - name: Compress Debug Symbols | |
| if: matrix.variant == 'msbuild' | |
| shell: pwsh | |
| run: | | |
| $ErrorActionPreference = 'Stop' | |
| output\7z.exe a -t7z "./output/archives/debug_symbols.7z" "output/*.pdb" -r | |
| - name: Upload artifacts | |
| if: matrix.variant == 'msbuild' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: weasel-artifact-${{ env.git_ref_name }} | |
| if-no-files-found: error | |
| path: | | |
| .\output\archives\weasel*.exe | |
| .\output\archives\debug_symbols.7z | |
| # Release-only steps (run on tags or master) | |
| - name: Extract changelog | |
| if: ${{ github.repository == 'rime/weasel' && startsWith(github.ref, 'refs/tags/') && matrix.variant == 'msbuild' }} | |
| shell: pwsh | |
| run: .\extract_changelog.ps1 | |
| - name: Create Nightly release | |
| if: ${{ github.repository == 'rime/weasel' && github.ref == 'refs/heads/master' && matrix.variant == 'msbuild' }} | |
| uses: 'marvinpinto/action-automatic-releases@latest' | |
| with: | |
| repo_token: ${{ secrets.GITHUB_TOKEN }} | |
| automatic_release_tag: latest | |
| prerelease: true | |
| title: "Nightly Build" | |
| files: | | |
| ./output/archives/weasel*.exe | |
| ./output/archives/debug_symbols.7z | |
| - name: Release (stable) | |
| if: ${{ github.repository == 'rime/weasel' && startsWith(github.ref, 'refs/tags/') && matrix.variant == 'msbuild' }} | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| draft: true | |
| files: | | |
| ./output/archives/weasel*.exe | |
| ./output/archives/debug_symbols.7z | |
| body_path: ${{ github.workspace }}/RELEASE_CHANGELOG.md |