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 run: sudo apt-get update && sudo apt-get install -y gcc-mingw-w64-x86-64 - 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