oxc/.github/workflows/ci.yml
Boshen 230c7c8294
ci: install minimal profile (#256)
ci: refactor rustup action
2023-04-05 12:26:37 +08:00

129 lines
2.6 KiB
YAML

name: CI
on:
workflow_dispatch:
pull_request:
paths:
- 'crates/**'
- 'tasks/**'
- 'Cargo.toml'
- 'Cargo.lock'
- 'rust-toolchain.toml'
- '!**/*.md'
push:
branches:
- main
paths:
- 'crates/**'
- 'tasks/**'
- 'Cargo.toml'
- 'Cargo.lock'
- 'rust-toolchain.toml'
- '!**/*.md'
# cancel previous job runs for the same workflow + pr
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_QUIET: true
jobs:
format:
name: Format Rust Files
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Rust Toolchain
uses: ./.github/actions/rustup
with:
fmt: true
- name: Run rustfmt
run: cargo fmt --all -- --check
lint:
name: Lint Rust Files
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Rust Toolchain
uses: ./.github/actions/rustup
with:
clippy: true
- name: Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: check
- name: Run cargo check
run: cargo check --workspace --all-targets --all-features --release --locked
- name: Run clippy
run: cargo lint -- -D warnings
typos:
name: Spell Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: crate-ci/typos@master
with:
files: .
check-dependencies:
name: Check Dependencies
runs-on: ubuntu-latest
steps:
- name: Checkout PR Branch
uses: actions/checkout@v3
- name: Install Rust Toolchain
uses: ./.github/actions/rustup
- name: Install cargo-udeps
uses: taiki-e/install-action@v2
with:
tool: cargo-udeps
- name: Run udeps
run: cargo udeps
test:
strategy:
matrix:
include:
- os: windows-latest
- os: ubuntu-latest
- os: macos-latest
name: Test
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Install Rust Toolchain
uses: ./.github/actions/rustup
- name: Install cargo-nextest
uses: taiki-e/install-action@v2
with:
tool: cargo-nextest
- name: Cache
uses: Swatinem/rust-cache@v2
with:
shared-key: check
- name: Build tests
run: cargo nextest run --no-run --locked
- name: Run tests
run: cargo nextest run