name: Frontal Code CI permissions: contents: read on: push: branches: - main - 'develop/**' - 'feature/*' - 'fix/*' - 'hotfix/*' paths: - .github/workflows/rust-ci.yml - .github/scripts/check_doc_source_of_truth.py - README.md - USAGE.md - Cargo.toml - Cargo.lock - crates/** - extensions/code-slack/** - scripts/** - docs/** - sdks/rust/** - sdks/typescript/** - biome.json - ultracite.json - bunfig.toml - tools/** pull_request: branches: - main paths: - .github/workflows/rust-ci.yml - .github/scripts/check_doc_source_of_truth.py - README.md - USAGE.md - Cargo.toml - Cargo.lock - crates/** - extensions/code-slack/** - scripts/** - docs/** workflow_dispatch: concurrency: group: rust-ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true defaults: run: working-directory: . env: CARGO_TERM_COLOR: always jobs: doc-source-of-truth: name: docs source-of-truth runs-on: blacksmith-4vcpu-ubuntu-2404 defaults: run: working-directory: . steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.x" - name: Check docs and metadata for stale branding run: python .github/scripts/check_doc_source_of_truth.py fmt: name: cargo fmt runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - name: Install pinned Rust toolchain run: rustup show - uses: Swatinem/rust-cache@v2 with: workspaces: . -> target - name: Check formatting run: cargo fmt --all --check test-workspace: name: cargo test --workspace runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - name: Install pinned Rust toolchain run: rustup show - uses: Swatinem/rust-cache@v2 with: workspaces: . -> target - name: Run workspace tests run: cargo test --workspace # Runs the CLI and runtime tests on Windows so the Windows-only code paths (browser # launch for OAuth login, `cmd`-free hook execution, path handling) execute on a real # Windows host rather than only type-checking. Scope is the crates that own those paths. test-windows: name: cargo test (windows) runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Install pinned Rust toolchain run: rustup show - uses: Swatinem/rust-cache@v2 with: workspaces: . -> target - name: Run CLI and runtime tests on Windows run: cargo test --no-fail-fast -p cli -p code-runtime -p code-plugins slack-extension-ci: name: slack contract + build + lint runs-on: blacksmith-4vcpu-ubuntu-2404 defaults: run: working-directory: extensions/code-slack steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "20" cache: npm cache-dependency-path: extensions/code-slack/package-lock.json - name: Install pinned Rust toolchain run: rustup show - uses: Swatinem/rust-cache@v2 with: workspaces: . -> target - name: Install Bun uses: oven-sh/setup-bun@v1 with: bun-version: latest - name: Install Slack extension dependencies run: npm ci - name: Check generated contract freshness and Slack build run: npm run build - name: Run Slack extension lint checks continue-on-error: true run: npm run lint clippy-workspace: name: cargo clippy --workspace runs-on: blacksmith-4vcpu-ubuntu-2404 steps: - uses: actions/checkout@v4 - name: Install pinned Rust toolchain run: rustup show - uses: Swatinem/rust-cache@v2 with: workspaces: . -> target - name: Run workspace clippy run: cargo clippy --workspace