| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- name: Rust
- on:
- pull_request:
- branches: ["*"]
- push:
- branches: ["main", "dev"]
- 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-rust-lang/setup-rust-toolchain@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 --exclude-no-default-features
- --mutually-exclusive-features native-tls,rustls
- --mutually-exclusive-features websocket-native-tls,websocket-rustls
- --at-least-one-of native-tls,rustls
- --at-least-one-of client,server
- 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
- - os: macos-latest
- exe: rathole
- target: aarch64-apple-darwin
- steps:
- - uses: actions/checkout@v2
- - uses: actions-rust-lang/setup-rust-toolchain@v1
- with:
- rustflags: ""
- - name: Build
- run: cargo build
- - name: Run tests with native-tls
- run: cargo test --verbose
- - name: Run tests with rustls
- run: cargo test --verbose --no-default-features --features server,client,rustls,noise,websocket-rustls,hot-reload
- - uses: actions/upload-artifact@v4
- with:
- name: rathole-${{ matrix.target }}
- path: target/debug/${{ matrix.exe }}
|