---
name: CI
'on':
workflow_dispatch:
push:
branches:
- "development"
- "build-ci-*"
pull_request:
branches:
- "development"
types:
- opened
- reopened
- synchronize
merge_group:
env:
nightly_toolchain: nightly-2025-06-01
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: ${{ !startsWith(github.ref, 'refs/tags/v') || github.ref != 'refs/heads/development' || github.ref != 'refs/heads/nextnet' || github.ref != 'refs/heads/stagenet' }}
permissions: {}
jobs:
clippy:
name: clippy
runs-on: [ ubuntu-latest ]
steps:
- name: checkout
uses: actions/checkout@v5
with:
submodules: "true"
- name: toolchain
uses: dtolnay/rust-toolchain@nightly
with:
toolchain: ${{ env.nightly_toolchain }}
components: rustfmt, clippy
- name: Cache rust dependencies
uses: swatinem/rust-cache@v2
- name: cargo fmt
run: |
cargo +${{ env.nightly_toolchain }} fmt --all -- --check
- name: Install cargo-lints
run: |
cargo install cargo-lints
- name: Clippy check (with lints)
run: |
cargo lints clippy --all-targets --all-features
- name: cargo machete
run: |
cargo install cargo-machete@0.7.0
cargo machete
- name: cargo vet
if: ${{ false }}
run: |
cargo install cargo-vet@0.10.0 --locked
cargo vet
file-licenses:
name: file-licenses
runs-on: [ ubuntu-latest ]
steps:
- name: checkout
uses: actions/checkout@v5
- name: install ripgrep
run: |
# https://github.com/BurntSushi/ripgrep/releases/download/14.1.1/ripgrep_14.1.1-1_amd64.deb.sha256
wget -v https://github.com/BurntSushi/ripgrep/releases/download/14.1.1/ripgrep_14.1.1-1_amd64.deb
sudo dpkg -i ripgrep_14.1.1-1_amd64.deb
rg --version || exit 1
- name: run the license check
run: ./scripts/file_license_check.sh
build:
name: build
runs-on: [ ubuntu-latest ]
steps:
- name: checkout
uses: actions/checkout@v5
with:
submodules: "true"
- name: toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Cache rust dependencies
uses: Swatinem/rust-cache@v2
- name: cargo check
run: cargo check --release --all-targets --workspace
test:
name: test
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v5
with:
submodules: "true"
- name: toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
- name: Cache rust dependencies
uses: Swatinem/rust-cache@v2
- name: cargo test
run: |
cargo test -- --test-threads=2