Skip to content

[infra] Filter workspace CI #3699

Open
Open

Description

@liamappelbe

At the moment the workspace's workflow, native.yaml, is monolithic. If any packages in the workspace change, it runs all the tests for all the workspace packages. We'll need to change this when ffigen/jnigen move into the workspace (their tests are big and slow and slightly flaky). Options:

  1. Keep the separate workflow files. We can still use ci.dart to drastically simplify them, but maybe we don't need to combine all the workflow files?
  2. Use https://github.com/marketplace/actions/paths-changes-filter to filter the workflow more granularly than github's built in filters allow.
  3. Update ci.dart to understand the dependency DAG, check the git diffs vs main (special case to run everything if we're on main branch), and only run the affected tests.

I guess historically our pattern has been to move more and more of our infra into Dart land, which leans us towards option 3.

cc @dcharkes

Activity

  1. dcharkes commented on Sep 28, 2026

    @dcharkes
    Collaborator

    I guess historically our pattern has been to move more and more of our infra into Dart land, which leans us towards option 3.

    Yes, this allows for running things locally and for agents to run things locally.

    the dependency DAG

    Hm, actually you want to run things both if their dependencies change and if they are used as a dependency to get good test coverage.

    their tests are big and slow and slightly flaky

    I think it would be better to try to change our CI to categorize and slow and flaky tests.

    We have a very crude --fast filter on ci.dart which does not do a good job. And with the move of package:native_toolchain_c to package:file and package:process we can start writing more tests as fast unit tests that mock file system and process calls rather than slow full integration tests.

    Ways to categorize tests that I've suggested before.

    cc @goderbauer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type-infraA repository infrastructure change or enhancement

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions