name: Rust CI
on:
push:
branches:
- "master"
paths:
- 'src/**'
- 'Cargo.toml'
- '.github/workflows/ci-rust.yaml'
pull_request:
branches:
- "master"
paths:
- 'src/**'
- 'Cargo.toml'
- '.github/workflows/ci-rust.yaml'
jobs:
test_and_build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
name: Test and build
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- uses: actions/cache@v3
env:
cache-name: cache-cargo
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Test
env:
HUAK_MUTE_COMMAND: 1
run: |
cargo test --all-features -- --test-threads=1
- name: Build
run: cargo build --release
lint_and_fmt:
name: Lint and check fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy
- name: Cache Cargo
uses: actions/cache@v3
env:
cache-name: cache-cargo
with:
path: |
~/.cargo/registry
~/.cargo/git
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Run formatting checks
run: |
cargo fmt --all -- --check
- name: Run lints
env:
RUSTFLAGS: -C debuginfo=0
run: |
cargo clippy --all-features
cargo clippy -- -D warnings
dry-release:
name: Build with maturin
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64, i686]
steps:
- uses: actions/checkout@v3
- name: build wheels
uses: messense/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: --release --out dist --features openssl