Skip to content
This repository was archived by the owner on Apr 11, 2026. It is now read-only.

feat: RP-first tool routing + flow-code-run close phase fix (v0.1.47) #118

feat: RP-first tool routing + flow-code-run close phase fix (v0.1.47)

feat: RP-first tool routing + flow-code-run close phase fix (v0.1.47) #118

Workflow file for this run

name: CI
on:
push:
branches: [main]
paths:
- "flowctl/**"
- "scripts/**"
- "hooks/**"
- ".github/workflows/ci.yml"
pull_request:
branches: [main]
paths:
- "flowctl/**"
- "scripts/**"
- "hooks/**"
- ".github/workflows/ci.yml"
env:
CARGO_TERM_COLOR: always
jobs:
test:
name: Build & Test
runs-on: ubuntu-latest
defaults:
run:
working-directory: flowctl
steps:
- uses: actions/checkout@v4
- name: Install shellcheck
working-directory: .
run: sudo apt-get install -y shellcheck
- name: Lint shell scripts
working-directory: .
run: shellcheck scripts/*.sh scripts/hooks/*.sh flowctl/install.sh
- name: Validate JSON configs
working-directory: .
run: |
python3 -c "import json; json.load(open('hooks/hooks.json'))"
python3 -c "import json; json.load(open('.claude-plugin/plugin.json'))"
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- name: Cache cargo registry & build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
flowctl/target
key: ${{ runner.os }}-cargo-${{ hashFiles('flowctl/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Check formatting
run: cargo fmt --all -- --check
- name: Build
run: cargo build --all-targets
- name: Run tests
run: cargo test --all-targets
- name: Clippy
run: cargo clippy --all-targets -- -D warnings
- name: Audit dependencies
run: cargo install cargo-audit && cargo audit
integration:
name: Shell Integration Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry & build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
flowctl/target
key: ${{ runner.os }}-cargo-integration-${{ hashFiles('flowctl/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-integration-
- name: Build flowctl
run: cd flowctl && cargo build --release
- name: Configure git for tests
run: |
git config --global user.email "ci@test.local"
git config --global user.name "CI Test"
- name: Run shell integration tests
run: bash scripts/tests/run_all.sh
coverage:
name: Test Coverage
runs-on: ubuntu-latest
needs: [test]
defaults:
run:
working-directory: flowctl
steps:
- uses: actions/checkout@v4
- name: Install Rust toolchain with llvm-tools
uses: dtolnay/rust-toolchain@stable
with:
components: llvm-tools-preview
- name: Cache cargo registry & build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
flowctl/target
key: ${{ runner.os }}-cargo-cov-${{ hashFiles('flowctl/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-cov-
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Generate coverage report
run: cargo llvm-cov --all --lcov --output-path lcov.info
- name: Upload coverage artifact
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: flowctl/lcov.info
retention-days: 30