name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
permissions:
contents: read
jobs:
msrv:
name: MSRV (Rust 1.96)
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- name: Install system dependencies
run: sudo apt-get update -y && sudo apt-get install -y libdbus-1-dev
- uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c with:
toolchain: "1.96.0"
- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with:
node-version-file: .node-version
cache: pnpm
- name: Check MSRV
run: cargo check --locked --workspace --all-features --all-targets
test:
name: Test
runs-on: ubuntu-latest
timeout-minutes: 20
permissions:
contents: read
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- name: Check release state
run: python3 scripts/release/check-state.py
- name: Install system dependencies
run: sudo apt-get update -y && sudo apt-get install -y libdbus-1-dev bubblewrap
- name: Allow bwrap unprivileged user namespaces
run: |
echo 'abi <abi/4.0>,' | sudo tee /etc/apparmor.d/bwrap
echo 'include <tunables/global>' | sudo tee -a /etc/apparmor.d/bwrap
echo 'profile bwrap /usr/bin/bwrap flags=(unconfined) {' | sudo tee -a /etc/apparmor.d/bwrap
echo ' userns,' | sudo tee -a /etc/apparmor.d/bwrap
echo '}' | sudo tee -a /etc/apparmor.d/bwrap
sudo apparmor_parser -r /etc/apparmor.d/bwrap
- name: Test release scripts
run: scripts/release/test-build-artifact.sh
- uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c with:
toolchain: stable
- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with:
node-version-file: .node-version
cache: pnpm
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 with:
cache-on-failure: true
- name: Run tests
run: cargo test --all-targets --all-features
- name: Verify package contents
run: cargo package --list --locked --workspace
typescript:
name: TypeScript
runs-on: ubuntu-latest
timeout-minutes: 15
permissions:
contents: read
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c with:
toolchain: stable
- uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 with:
cache-on-failure: true
- uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 with:
node-version-file: .node-version
cache: pnpm
- name: Install
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm turbo run build
- name: Typecheck
run: pnpm turbo run types:check
- name: Audit dependencies
run: pnpm audit --audit-level high