diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..09c5790 --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,52 @@ +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 toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Install LLVM + run: choco install llvm --no-progress + + - name: Build Client + working-directory: ./client + run: 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 }}