Skip to content

v18.0.4

Choose a tag to compare

@mu-automation mu-automation released this 30 Mar 23:08
· 30 commits to refs/heads/main since this release
ec8aaf3

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-ci action

    This action is an OS agnostic action that will setup the stuart environment (stuart_setup, stuart_ci_setup, stuart_update) and run stuart_ci_build with the specified configurations. It provides a single output, log-path which is a path to all logs generated by this action. It has some performance increases like caching the .git/modules folder.

    PackageCi worfklow

    This 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-config input is a json string that contains all matrix configuration for the job (e.g. the input is passed directly to strategy.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.

    PackageMatrix worfklow

    This workflow is used to generate a matrix configuration that is consumed by the PackageCi worfklow. This workflow works by discovering all packages in a repository and generating a configuration for it. This workflow has two main inputs: (1) default-config which is the default list of matrix configurations to apply for each discovered package in the workspace and (2) package-config which is a way to define more specific configuration for a specific package, which will replace the default-config.

    PackageMatrix also supports running stuart_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:

    image

    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:

    image

  • .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