v18.0.4
What's Changed
-
Add github workflows for stuart CI Builds @Javagedes (#545)
Change Details
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
# A workflow to build EDKII packages using the CLANGPDB toolchain in windows and ubuntu environments. ## # Copyright (c) Microsoft Corporation. # # SPDX-License-Identifier: BSD-2-Clause-Patent ## name: CLANGPDB Package CI on: workflow_dispatch: push: branches: - release/202511 pull_request: branches: - release/202511 jobs: package-matrix: name: Gather Repository Packages uses: microsoft/mu_devops/.github/workflows/PackageMatrix.yml@personal/joeyvagedes/ci-workflow with: ci-config: '.pytool/CISettings.py' # Manually declared package configurations. package-config: | - packages: MdeModulePkg targets: RELEASE toolchain: CLANGPDB - packages: MdeModulePkg targets: DEBUG toolchain: CLANGPDB # Default config applied to any undeclared packages in the repo default-config: | targets: ["DEBUG,RELEASE"] toolchain: ["CLANGPDB"] python-version: '3.12' windows-ci: name: Windows CLANGPDB CI if: ${{ needs.package-matrix.outputs.matrix != '' }} needs: package-matrix uses: microsoft/mu_devops/.github/workflows/PackageCi.yml@personal/joeyvagedes/ci-workflow with: package-config: ${{ needs.package-matrix.outputs.matrix }} runner: windows-latest python-version: '3.12' setup-cmd: setup ubuntu-ci: name: Ubuntu CLANGPDB CI if: ${{ needs.package-matrix.outputs.matrix != '' }} needs: package-matrix uses: microsoft/mu_devops/.github/workflows/PackageCi.yml@personal/joeyvagedes/ci-workflow with: package-config: ${{ needs.package-matrix.outputs.matrix }} runner: ubuntu-latest container: ghcr.io/microsoft/mu_devops/ubuntu-24-test:latest python-version: '3.12' setup-cmd: setup
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:
-
.sync/codeql-platform.yml: Use GitHub TF-Hafnium mirrors @makubacki (#542)
Change Details
Replaces nested submodule URLs with GitHub mirrors to avoid issues with git.trustedfirmware.org being down.
-
Actions: Group dependabot and github actions PR updates @apop5 (#540)
Change Details
Group the dependabot pip updates into a single PR instead of individual PRs.
Group dependabot github action updates into a single PR instead of a group of PRs.
-
Update actions/create-github-app-token from @2 to @3 @apop5 (#541)
Change Details
actions/create-github-app-token
No breaking changes for this usages
-
.sync/MuDevOpsWrapper.yml: Add extra\_steps parameter @makubacki (#536)
Change Details
Jobs/PrGate.yml has an `extra_steps` parameter that allows for additional steps to run before it calls Steps/PrGate.yml.
This change allows a MuDevopsWrapper.yml pipeline to pass through build steps using this parameter.
-
Remove depreciated repos from filesync @apop5 (#530)
Change Details
With mu_tiano_plus, mu_silicon_intel_tiano, mu_silicon_arm_tiano being depreciated, remove those repos as filesync targets.
-
Containers: Prepare for GCC5 to GCC switch @apop5 (#529)
Change Details
EDK2 is moving towards depreciating the GCC5 toolchain in favor of the GCC tool chain.
To prepare for this, create exports for both GCC5 and GCC to allow container builds to use either.
-
Bump upload-artifact from v6 to v7 @apop5 (#531)
Change Details
Updates codeql sync file to use upload-artifact@v7
Full Changelog: v18.0.3...v18.0.4