name: Rust CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
id-token: write
env:
CARGO_TERM_COLOR: always
TSLP_LANGUAGES: "rust,python,javascript,typescript,tsx,go,ruby,php,elixir,toml,csharp,java,c,cpp,json,yaml,hcl,make,bash,haskell,html,css,xml,sql,kotlin,swift,lua,nix,powershell,proto,ini,dockerfile,scala,dart,r,julia,zig,clojure,elm,erlang,vue,svelte,scss,latex,fish,perl,groovy,ocaml,fortran"
TSLP_LINK_MODE: static
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Check formatting
run: cargo fmt --check
- uses: Swatinem/rust-cache@v2
- name: Run clippy
run: cargo clippy -- -D warnings
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Build
run: cargo build --release