Skip to content

ci: consolidate workflows, add path filtering, cover all plugins#295

Merged
streamer45 merged 10 commits intomainfrom
devin/1776023868-ci-consolidation
Apr 13, 2026
Merged

ci: consolidate workflows, add path filtering, cover all plugins#295
streamer45 merged 10 commits intomainfrom
devin/1776023868-ci-consolidation

Conversation

@staging-devin-ai-integration
Copy link
Copy Markdown
Contributor

@staging-devin-ai-integration staging-devin-ai-integration bot commented Apr 12, 2026

Summary

Consolidates CI workflows to reduce duplication, simplify maintenance, and improve performance. Adds path-based filtering so unrelated changes skip unnecessary jobs.

Key changes:

  • Path-based filtering (ci.yml): Uses dorny/paths-filter@v3 to detect changes in ci config, rust (crates/SDKs/toolchain config/.cargo/config.toml), UI, plugins, E2E. Sub-workflows run conditionally; workflow_dispatch always triggers all.
  • Plugin CI (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). Added ldconfig for cache hits.
  • UI CI (ui.yml): 4 jobs → 1 job. Eliminates 3× redundant checkout + bun install.
  • Skit CI (skit.yml): No net changes — lint and test remain as separate parallel jobs.
  • REUSE check folded inline into ci.yml; deleted standalone reuse.yml.
  • Pre-existing lint fixes: 42+ clippy warnings in helsinki, plus fixes in parakeet and aac-encoder.

Net result: Path filtering skips unrelated work, full plugin coverage (13/13 vs 8/13), UI setup duplication eliminated.

Review & Testing Checklist for Human

  • Verify contents: read permission on the changes job works correctly — job-level permissions replace defaults, so this was added explicitly alongside pull-requests: read
  • Verify path filtering works correctly: push a UI-only change and confirm skit/plugins/e2e jobs are skipped
  • Verify path filtering works correctly: push a rust-only change and confirm UI job is skipped but plugins job runs (SDK dependency)
  • Spot-check the all-checks gate behavior: confirm it correctly fails when a sub-job fails, passes when all pass/skip
  • Review helsinki clippy fixes (model.rs, config.rs, translation.rs) — these are pre-existing issues in code not previously linted

Notes

  • helsinki Cargo.lock has 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 from cargo clippy --fix resolving against current registry state — all semver-compatible.
  • workflow_dispatch on plugins.yml is pre-existing (allows standalone debugging runs) — added a clarifying comment.
  • CARGO_TARGET_DIR sharing across plugins in a group: added comment noting potential feature-flag cross-contamination risk.
  • Filed ci(skit): test-gpu condition may not work as intended inside workflow_call #297 for pre-existing test-gpu github.event_name condition inside workflow_call.

Link to Devin session: https://staging.itsdev.in/sessions/6905b3985349411ba39da00c2dea3f7d
Requested by: @streamer45


Staging: Open in Devin

- 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>
@staging-devin-ai-integration
Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

streamkit-devin and others added 2 commits April 12, 2026 20:01
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>
staging-devin-ai-integration[bot]

This comment was marked as resolved.

…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>
staging-devin-ai-integration[bot]

This comment was marked as resolved.

streamkit-devin and others added 2 commits April 12, 2026 20:15
… 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>
Copy link
Copy Markdown
Contributor Author

@staging-devin-ai-integration staging-devin-ai-integration bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 new potential issues.

View 9 additional findings in Devin Review.

Staging: Open in Devin
Debug

Playground

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚩 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)

Staging: Open in Devin

Was this helpful? React with 👍 or 👎 to provide feedback.

Debug

Playground

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Valid observation — this is pre-existing (the condition was unchanged in this PR). Filed #297 to track.

streamkit-devin and others added 3 commits April 12, 2026 20:35
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>
@streamer45 streamer45 merged commit 3428471 into main Apr 13, 2026
13 checks passed
@streamer45 streamer45 deleted the devin/1776023868-ci-consolidation branch April 13, 2026 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants