ci: consolidate workflows, add path filtering, cover all plugins#295
ci: consolidate workflows, add path filtering, cover all plugins#295streamer45 merged 10 commits intomainfrom
Conversation
- ci.yml: add dorny/paths-filter change detection so sub-workflows only run when relevant files change; fold REUSE compliance check inline; update all-checks gate to tolerate skipped jobs - plugins.yml: replace 5 separate jobs (format, lint-simple, lint-whisper, lint-nllb, lint-sherpa) with a single matrix job grouped by native dep profile (simple, sherpa, nllb); covers all 13 plugins (adds aac-encoder, helsinki, parakeet, pocket-tts, supertonic); uses shared CARGO_TARGET_DIR to deduplicate common crate compilation - ui.yml: merge 4 jobs (lint, test, build, knip) into 1, eliminating 3x redundant checkout + bun install - skit.yml: merge lint + test into lint-and-test, saving a full UI build + Rust toolchain setup; keep test-gpu and build separate - Delete standalone reuse.yml (now inline in ci.yml) Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
These plugins were not previously covered by CI linting. Running cargo fmt to fix pre-existing formatting issues now caught by the expanded plugin matrix. Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
Pre-existing formatting issue now caught by the expanded plugin CI matrix. Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
…ered plugins These plugins were not previously linted in CI. Fix issues now caught by the expanded plugin matrix: - helsinki: 42 clippy warnings (format string interpolation, unnecessary wraps, excessive bools, match_same_arms, significant drop tightening) - parakeet: 1 clippy warning (missing_const_for_fn on non-const method) - aac-encoder: 2 clippy warnings (cast lints on u64/u128 conversion) Also fix Devin Review finding: add 'changes' job to all-checks gate so a failure in the change-detection job correctly fails the gate instead of silently skipping all CI checks. Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
cargo clippy --fix left some lines that cargo fmt wants to reformat. Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
… hits - ci.yml: add rust filter to plugins job condition so changes to plugin SDK (sdks/**) or core crates (crates/**) trigger plugin linting — prevents breaking SDK changes from going undetected - plugins.yml: add ldconfig step for CTranslate2 cache hits, matching the sherpa-onnx pattern for consistency Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
…libs Expand cache paths to include headers so future plugins using bindgen or cc won't break on cache hits. Bump cache keys (v2) to invalidate stale caches that only contained lib files. Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
There was a problem hiding this comment.
🚩 test-gpu condition may not work as intended inside a reusable workflow
The test-gpu job at skit.yml:79 has if: github.event_name != 'pull_request' || .... Since skit.yml is triggered via workflow_call, GitHub Actions docs state that github.event_name in the called workflow may be workflow_call rather than the original event name. If so, github.event_name != 'pull_request' would always be true, meaning GPU tests would run for fork PRs too (the condition was meant to skip them). However, this is pre-existing behavior — the condition was not changed in this PR, and skit.yml was already a workflow_call target before.
(Refers to line 79)
Was this helpful? React with 👍 or 👎 to provide feedback.
Debug
There was a problem hiding this comment.
Valid observation — this is pre-existing (the condition was unchanged in this PR). Filed #297 to track.
Include rust-toolchain.toml, clippy.toml, and rustfmt.toml in the rust path filter so changes to toolchain version or lint/format config trigger Rust CI jobs. Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
- skit.yml: restore separate lint and test jobs (parallel execution) to preserve wall-clock time. Reverts the merge that traded parallelism for fewer runner minutes. - plugins.yml: add comment explaining workflow_dispatch intent (standalone debugging) and CARGO_TARGET_DIR sharing tradeoff (potential feature-flag cross-contamination). Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
…filter - changes job: add contents:read to permissions block — job-level permissions replace defaults, so the checkout step needs this explicitly alongside pull-requests:read. - rust path filter: add .cargo/config.toml — this repo-wide Cargo config can alter how every Rust crate builds, so changes to it must trigger Rust CI. Signed-off-by: Claudio Costa <claudio.costa@partners.cognition.ai> Signed-off-by: StreamKit Devin <devin@streamkit.dev> Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
Summary
Consolidates CI workflows to reduce duplication, simplify maintenance, and improve performance. Adds path-based filtering so unrelated changes skip unnecessary jobs.
Key changes:
ci.yml): Usesdorny/paths-filter@v3to detect changes in ci config, rust (crates/SDKs/toolchain config/.cargo/config.toml), UI, plugins, E2E. Sub-workflows run conditionally;workflow_dispatchalways triggers all.plugins.yml): 5 jobs → 1 matrix job (simple/sherpa/nllb groups). Covers all 13 official marketplace plugins (was 8). Fixed native dep caches to include headers alongside libs (bumped cache keys). Addedldconfigfor cache hits.ui.yml): 4 jobs → 1 job. Eliminates 3× redundant checkout + bun install.skit.yml): No net changes — lint and test remain as separate parallel jobs.ci.yml; deleted standalonereuse.yml.Net result: Path filtering skips unrelated work, full plugin coverage (13/13 vs 8/13), UI setup duplication eliminated.
Review & Testing Checklist for Human
contents: readpermission on thechangesjob works correctly — job-level permissions replace defaults, so this was added explicitly alongsidepull-requests: readall-checksgate behavior: confirm it correctly fails when a sub-job fails, passes when all pass/skipNotes
Cargo.lockhas dependency version bumps (schemars 1.1→1.2, tokio 1.48→1.51, ts-rs 11.1→12.0, internal crate 0.1→0.2). These came fromcargo clippy --fixresolving against current registry state — all semver-compatible.workflow_dispatchonplugins.ymlis pre-existing (allows standalone debugging runs) — added a clarifying comment.CARGO_TARGET_DIRsharing across plugins in a group: added comment noting potential feature-flag cross-contamination risk.test-gpugithub.event_namecondition insideworkflow_call.Link to Devin session: https://staging.itsdev.in/sessions/6905b3985349411ba39da00c2dea3f7d
Requested by: @streamer45