Add github workflows for stuart CI Builds#545
Merged
Conversation
Contributor
Author
|
https://github.com/Javagedes/mu_basecore/actions/runs/23758696328 Latest test run before creating the PR. |
makubacki
reviewed
Mar 30, 2026
1d944d2 to
842fd4c
Compare
makubacki
approved these changes
Mar 30, 2026
apop5
approved these changes
Mar 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request adds two new workflows and a github action that are reusable across repositories that use the Stuart CI system.
New Actions
stuart-ciactionThis action is an OS agnostic action that will setup the stuart environment (
stuart_setup,stuart_ci_setup,stuart_update) and runstuart_ci_buildwith the specified configurations. It provides a single output,log-pathwhich is a path to all logs generated by this action. It has some performance increases like caching the .git/modules folder.PackageCiworfklowThis workflow is an OS agnostic workflow that will setup the entire runner environment and run CI on the specified packages. This workflow will generate a build matrix using the provided configuration input to test multiple packages under multiple conditions. The
package-configinput is a json string that contains all matrix configuration for the job (e.g. the input is passed directly tostrategy.matrix(Examples below). This input string can be hardcoded or automatically generated. It has some performance increases like caching the python version and python dependencies.PackageMatrixworfklowThis workflow is used to generate a matrix configuration that is consumed by the
PackageCiworfklow. This workflow works by discovering all packages in a repository and generating a configuration for it. This workflow has two main inputs: (1)default-configwhich is the default list of matrix configurations to apply for each discovered package in the workspace and (2)package-configwhich is a way to define more specific configuration for a specific package, which will replace thedefault-config.PackageMatrixalso supports runningstuart_ci_build, which will filter the discovered packages in the workspace to only package's that actually need to be tested. This is useful as it prevents generating a runner for a package that does not need tested.Usage Examples
The three actions / workflows above are not sync'd to repositories. It is expected that a repository maintains its own final github workflow that consumes these packages with it's specific configuration. An example can be seen below
Example Leaf node worfklow
Example CI runs
Below is an example of a pull request that generates a large amount of runners because it changes file that is not specific to a package, which results in all packages needing tested:
Below is an example of a pull request that generates only a few runners, as stuart_pr_eval decided only a few packages required testing: