Skip to content

CI cleanup: split repo-level test workflows and narrow plugin fan-out #44

@lucarlig

Description

@lucarlig

Summary

The current Rust/Python plugin CI mixes plugin-scoped validation with repo-level test coverage, which causes unnecessary matrix fan-out and makes workflow intent harder to follow.

This cleanup would separate repo-level test suites into their own workflows and keep plugin CI focused on plugin-specific changes.

Current behavior

The main plugin CI workflow currently handles both:

  • plugin selection and per-plugin build/test execution
  • repo-level test files such as:
    • tests/test_plugin_catalog.py
    • tests/test_install_built_wheel.py

This makes the workflow broader than it needs to be and contributes to CI running more work than necessary for plugin-focused PRs.

Desired behavior

  • Main plugin CI should only cover plugin-scoped validation
  • Repo-level test suites should run in dedicated workflows
  • Plugin integration tests under plugins/tests/<slug>/... should remain plugin-scoped
  • Only truly shared repo inputs should trigger all-plugin fan-out

Proposed changes

  • Narrow shared-path detection in tools/plugin_catalog.py
  • Stop treating Cargo.lock as a shared all-plugin trigger
  • Stop treating root tests/** as shared plugin-CI input
  • Map plugins/tests/<slug>/... to the owning plugin
  • Create a dedicated workflow for tests/test_plugin_catalog.py
  • Create a dedicated workflow for tests/test_install_built_wheel.py
  • Keep the main plugin CI workflow focused on:
    • plugin source changes
    • plugin integration tests
    • true shared repo inputs such as shared crates, workflows, and tooling

Expected outcome

  • Cleaner CI workflow boundaries
  • Less unnecessary plugin matrix execution
  • Clear separation between plugin CI and repo-level validation
  • Easier maintenance of workflow path contracts and plugin selection logic

Acceptance criteria

  • A change in plugins/rust/python-package/<slug>/... runs CI only for <slug>
  • A change in plugins/tests/<slug>/... runs CI only for <slug>
  • Cargo.lock does not cause all-plugin fan-out by itself
  • tests/test_plugin_catalog.py runs in its own workflow
  • tests/test_install_built_wheel.py runs in its own workflow
  • Main plugin CI no longer directly runs those repo-level test files
  • Workflow contract tests cover the new routing behavior

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions