name: CI on: push: branches: ["main", "master"] tags: ["v*"] pull_request: jobs: build-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Rust (stable) uses: dtolnay/rust-toolchain@stable - name: Cache dependencies uses: Swatinem/rust-cache@v2 - name: Build run: cargo build --workspace --verbose - name: Test run: cargo test --workspace --verbose build-windows-client: runs-on: ubuntu-latest if: github.event_name == 'push' steps: - uses: actions/checkout@v4 - name: Install Rust (stable) + Windows target uses: dtolnay/rust-toolchain@stable with: targets: x86_64-pc-windows-gnu - name: Install MinGW cross-compiler and tools run: sudo apt-get update && sudo apt-get install -y gcc-mingw-w64-x86-64 mingw-w64-tools - name: Cache dependencies uses: Swatinem/rust-cache@v2 with: key: windows-gnu - name: Build Windows client (cross-compile) run: | cargo build --release --package helios-client --target x86_64-pc-windows-gnu env: CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER: x86_64-w64-mingw32-gcc - name: Upload Windows client artifact uses: actions/upload-artifact@v4 with: name: helios-remote-client-windows path: target/x86_64-pc-windows-gnu/release/helios-client.exe if-no-files-found: error - name: Rename exe for release if: github.ref == 'refs/heads/master' run: cp target/x86_64-pc-windows-gnu/release/helios-client.exe helios-remote-client-windows.exe - name: Publish rolling release (latest) if: github.ref == 'refs/heads/master' uses: softprops/action-gh-release@v2 with: tag_name: latest name: "Latest Build" body: "Rolling release — automatically updated on every push to master." prerelease: true files: helios-remote-client-windows.exe env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}