From ccbee92b65a35a2ce8aa4c6ec4aa6d1f09000cf7 Mon Sep 17 00:00:00 2001 From: Michael D Kinney Date: Fri, 23 Jan 2026 17:25:10 -0800 Subject: [PATCH] .azurepipelines/templates: Split out unit test jobs Add unit tests jobs for stuart_ci_build NOOPT X64 with options to only build and run unit tests. This disables all other plugins including CompilerPlugin that performs package build tests. --disable-all HostUnitTestCompilerPlugin=run HostBasedUnitTestRunner=run Update all package build tests to remove the NOOPT option. This is required because NOOPT can now be used to perform both package build tests and unit test builds. In order to preserve the same number of CI checks, NOOPT package build coverage must be disabled and NOOPT is only used for unit test builds in independent jobs. Daily/Weekly/Release coverage build can potentially use NOOPT for package build tests to verify no regressions for NOOPT package builds. Signed-off-by: Michael D Kinney --- .../templates/pr-gate-build-job.yml | 38 ++++++++++++------- .azurepipelines/templates/pr-gate-steps.yml | 3 +- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/.azurepipelines/templates/pr-gate-build-job.yml b/.azurepipelines/templates/pr-gate-build-job.yml index e55cb0b2ca..0f19ca58c6 100644 --- a/.azurepipelines/templates/pr-gate-build-job.yml +++ b/.azurepipelines/templates/pr-gate-build-job.yml @@ -24,22 +24,33 @@ jobs: #Use matrix to speed up the build process strategy: matrix: + ${{ if eq(parameters.tool_chain_tag, 'GCC') }}: + TARGET_GCC_ONLY_UNIT_TEST: + Build.Pkgs: 'EmbeddedPkg' + Build.Targets: 'NOOPT' + Build.Archlist: 'X64' + Build.ExtraStuartArgs: '--disable-all HostUnitTestCompilerPlugin=run HostBasedUnitTestRunner=run' + TARGET_UNIT_TEST: + Build.Pkgs: 'ArmPkg,ArmPlatformPkg,MdePkg,UefiCpuPkg,MdeModulePkg,NetworkPkg,RedfishPkg,PcAtChipsetPkg,PrmPkg,ShellPkg,SourceLevelDebugPkg,StandaloneMmPkg,SignedCapsulePkg,FmpDevicePkg,FatPkg,UnitTestFrameworkPkg,DynamicTablesPkg,CryptoPkg,IntelFsp2Pkg,IntelFsp2WrapperPkg,SecurityPkg,ArmVirtPkg,EmulatorPkg,OvmfPkg,UefiPayloadPkg' + Build.Targets: 'NOOPT' + Build.Archlist: 'X64' + Build.ExtraStuartArgs: '--disable-all HostUnitTestCompilerPlugin=run HostBasedUnitTestRunner=run' ${{ if eq(parameters.tool_chain_tag, 'GCC') }}: TARGET_GCC_ONLY: Build.Pkgs: 'EmbeddedPkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: ${{ parameters.arch_list }} TARGET_ARM_ARMPLATFORM: Build.Pkgs: 'ArmPkg,ArmPlatformPkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: ${{ parameters.arch_list }} TARGET_MDE_CPU: Build.Pkgs: 'MdePkg,UefiCpuPkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: ${{ parameters.arch_list }} TARGET_MDEMODULE_DEBUG: Build.Pkgs: 'MdeModulePkg' - Build.Targets: 'DEBUG,NOOPT' + Build.Targets: 'DEBUG' Build.Archlist: ${{ parameters.arch_list }} TARGET_MDEMODULE_RELEASE: Build.Pkgs: 'MdeModulePkg' @@ -47,19 +58,19 @@ jobs: Build.Archlist: ${{ parameters.arch_list }} TARGET_NETWORK: Build.Pkgs: 'NetworkPkg,RedfishPkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: ${{ parameters.arch_list }} TARGET_OTHER: Build.Pkgs: 'PcAtChipsetPkg,PrmPkg,ShellPkg,SourceLevelDebugPkg,StandaloneMmPkg,SignedCapsulePkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: ${{ parameters.arch_list }} TARGET_FMP_FAT_TEST: Build.Pkgs: 'FmpDevicePkg,FatPkg,UnitTestFrameworkPkg,DynamicTablesPkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: ${{ parameters.arch_list }} TARGET_CRYPTO_DEBUG: Build.Pkgs: 'CryptoPkg' - Build.Targets: 'DEBUG,NOOPT' + Build.Targets: 'DEBUG' Build.Archlist: ${{ parameters.arch_list }} TARGET_CRYPTO_RELEASE: Build.Pkgs: 'CryptoPkg' @@ -67,26 +78,26 @@ jobs: Build.Archlist: ${{ parameters.arch_list }} TARGET_FSP: Build.Pkgs: 'IntelFsp2Pkg,IntelFsp2WrapperPkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: ${{ parameters.arch_list }} TARGET_SECURITY: Build.Pkgs: 'SecurityPkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: ${{ parameters.arch_list }} TARGET_UEFIPAYLOAD_IA32_X64: Build.Pkgs: 'UefiPayloadPkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: 'IA32,X64' ${{ if eq(parameters.tool_chain_tag, 'GCC') }}: TARGET_UEFIPAYLOAD_AARCH64_GCC_ONLY: Build.Pkgs: 'UefiPayloadPkg' - Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' + Build.Targets: 'DEBUG,RELEASE,NO-TARGET' Build.Archlist: 'AARCH64' TARGET_PLATFORMS: # For Platforms only check code. Leave it to Platform CI # to build them. Build.Pkgs: 'ArmVirtPkg,EmulatorPkg,OvmfPkg' - Build.Targets: 'NO-TARGET,NOOPT' + Build.Targets: 'NO-TARGET' Build.Archlist: ${{ parameters.arch_list }} workspace: @@ -105,6 +116,7 @@ jobs: build_pkgs: $(Build.Pkgs) build_targets: $(Build.Targets) build_archs: $(Build.Archlist) + build_extra_stuart_args: $(Build.ExtraStuartArgs) usePythonVersion: ${{ parameters.usePythonVersion }} extra_install_step: ${{ parameters.extra_install_step }} diff --git a/.azurepipelines/templates/pr-gate-steps.yml b/.azurepipelines/templates/pr-gate-steps.yml index 55eb1ef7e7..316343220e 100644 --- a/.azurepipelines/templates/pr-gate-steps.yml +++ b/.azurepipelines/templates/pr-gate-steps.yml @@ -12,6 +12,7 @@ parameters: build_pkgs: '' build_targets: '' build_archs: '' + build_extra_stuart_args: '' usePythonVersion: '' extra_install_step: [] @@ -90,7 +91,7 @@ steps: displayName: Build and Test ${{ parameters.build_pkgs }} ${{ parameters.build_archs}} inputs: script: | - stuart_ci_build -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ parameters.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} + stuart_ci_build -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ parameters.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} ${{ parameters.build_extra_stuart_args }} condition: and(gt(variables.pkg_count, 0), succeeded()) # Publish Test Results to Azure Pipelines/TFS