name: Build and Release Windows Client on: push: tags: - 'v*' jobs: build: runs-on: windows-latest defaults: run: shell: powershell steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust run: | # Bypass execution policy for the current session Set-ExecutionPolicy Bypass -Scope Process -Force $installDir = "$env:USERPROFILE\.cargo\bin" if (-not (Test-Path $installDir)) { 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 } # Append to GITHUB_PATH for subsequent steps Add-Content -Path $env:GITHUB_PATH -Value $installDir - name: Install LLVM run: | Set-ExecutionPolicy Bypass -Scope Process -Force choco install llvm --no-progress - name: Build Client run: | Set-ExecutionPolicy Bypass -Scope Process -Force $env:Path = "$env:USERPROFILE\.cargo\bin;" + $env:Path cd client cargo build --release - name: Prepare Binaries for Installer run: | Set-ExecutionPolicy Bypass -Scope Process -Force New-Item -ItemType Directory -Force -Path bin Copy-Item "client\target\release\meshvpn-client.exe" "bin\client.exe" Invoke-WebRequest -Uri "https://github.com/WireGuard/wintun/releases/latest/download/wintun.dll" -OutFile "bin\wintun.dll" - name: Install WiX Toolset run: | Set-ExecutionPolicy Bypass -Scope Process -Force choco install wixtoolset --no-progress - name: Build MSI Installer run: | Set-ExecutionPolicy Bypass -Scope Process -Force $env:Path += ";C:\Program Files (x86)\WiX Toolset v3\bin" 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 }}