Skip to content

Managing a Codebase

The idea here is that you have code and you have a to-do list of tasks to do. Maybe you want to make sure all the drivers compile, maybe you want to check all the images in your file tree and make sure they are encoded correctly.

These use cases will fit into our 'CI' tools category.

Getting Started

Our CI tools simplify the process of creating and running CiBuildPlugins on packages within any repository, not just a platform repository. We even provide a simple means to filter which packages are tested based off which files have been changed through edk2_pr_eval.py/stuart_pr_eval.exe. These packages do not need to be tied to a platform either; they can be in the platform repository or in a separate repository. Some examples of CiBuildPlugins are uncrustify audits, guid audits, package builds, etc.

stuart_ci_setup can be called to clone whatever code repositories would be required for this operation. stuart_update can be called to download all the tools the environment says it needs. From there, stuart_ci_build takes a list of packages to look at and runs all plugins on each package.

Similar to Build a Platform, this process involves invocables. Since we already explained the process of creating a settings file to provide platform information to the build invocables, we wont go into to much detail here. Just know that you have additional invocables that you will need override to make the CI invocables work!

Tip

Create a separate CI Settings file for codebase management not directly related to the platform!

Take a look all all the relevant invocables below: