name: Build and Release Windows Client on: push: tags: - 'v*' jobs: build: runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust shell: pwsh run: | # Install rustup using the official Windows installer Invoke-WebRequest -Uri "https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe" -OutFile "rustup-init.exe" .\rustup-init.exe -y --default-toolchain stable # Add cargo to PATH for the rest of the session echo "$HOME\.cargo\bin" | Out-File -FilePath $env:GITHUB_PATH -Append -Encoding utf8 - name: Install LLVM run: choco install llvm --no-progress - name: Build Client shell: pwsh run: | cd client cargo build --release - name: Prepare Binaries for Installer shell: pwsh run: | New-Item -ItemType Directory -Force -Path bin Copy-Item "client\target\release\meshvpn-client.exe" "bin\client.exe" # Download Wintun.dll as it is a driver binary not stored in git Invoke-WebRequest -Uri "https://github.com/WireGuard/wintun/releases/latest/download/wintun.dll" -OutFile "bin\wintun.dll" - name: Install WiX Toolset run: choco install wixtoolset --no-progress - name: Build MSI Installer shell: pwsh run: | # candle.exe compiles .wxs to .wixobj # light.exe links .wixobj to .msi candle.exe installer\product.wxs -o installer\product.wixobj light.exe installer\product.wixobj -o meshvpn-client.msi - name: Create Gitea Release uses: softprops/action-gh-release@v1 with: files: | client/target/release/meshvpn-client.exe meshvpn-client.msi env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}