name: Rust on: push: branches: [ main ] pull_request: branches: [ main ] concurrency: # Documentation suggests ${{ github.head_ref }}, but that's only available on pull_request/pull_request_target triggers, so using ${{ github.ref }}. # On main, we want all builds to complete even if merging happens faster to make it easier to discover at which point something broke. group: ${{ github.ref == 'refs/heads/main' && format('ci-main-{0}', github.sha) || format('ci-{0}', github.ref) }} cancel-in-progress: true env: CARGO_TERM_COLOR: always jobs: lints: name: Lints runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable components: clippy - uses: Swatinem/rust-cache@v1 - name: Clippy run: cargo clippy -- -D warnings - name: Setup cargo-hack run: cargo install cargo-hack - name: Check all features run: cargo hack check --feature-powerset --no-dev-deps build: name: Build for ${{ matrix.target }} runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest exe: rathole target: x86_64-unknown-linux-gnu - os: windows-latest exe: rathole.exe target: x86_64-pc-windows-msvc - os: macos-latest exe: rathole target: x86_64-apple-darwin steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - uses: Swatinem/rust-cache@v1 - name: Build release run: cargo build --release - name: Run tests run: cargo test --release --verbose - uses: actions/upload-artifact@v2 with: name: rathole-${{ matrix.target }} path: target/release/${{ matrix.exe }}