edk2/.azurepipelines
Oliver Smith-Denny d1b6a9c968 .azurepipelines: Move to VS2026
This upgrades the Azure Pipelines CI to use
VS2026 instead of VS2022.

The Windows VM image is updated to windows-2025-vs2026 which
has been updated to use VS2026. Note, 2025 references
the Windows Server release, not the VS version. Azure pipelines
has not migrated its windows-2025 VM image to use VS2026 yet,
it will do so after that feature is GA'd, at which point edk2
will have time to update to that VM image.

Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
2026-07-27 19:09:16 +00:00
..
templates .azurepipelines: Move to VS2026 2026-07-27 19:09:16 +00:00
ReadMe.md .azurepipelines: Move to VS2026 2026-07-27 19:09:16 +00:00
Ubuntu-CLANGDWARF.yml .azurepipelines,OvmfPkg: Remove LOONGARCH64 builds from CLANGDWARF CI 2026-03-17 15:52:22 +00:00
Ubuntu-CLANGPDB.yml .azurepipelines,OvmfPkg: Remove RISCV64, LOONGARCH64 from CLANGPDB CI 2026-03-17 15:52:22 +00:00
Ubuntu-GCC.yml Global: Rename default_linux_image to default_linux_container 2026-03-13 16:58:56 +00:00
Ubuntu-PatchCheck.yml .azurepipelines: Fix Python version (to 3.12) 2023-10-31 14:40:50 +00:00
Windows-CLANGPDB.yml .azurepipelines: Add CLANGPDB Windows CI 2026-03-31 20:15:44 +00:00
Windows-VS.yml .azurepipelines: Move to VS2026 2026-07-27 19:09:16 +00:00

Azure DevOps Pipelines

These yml files are used to provide CI builds using the Azure DevOps Pipeline Service. Most of the CI leverages edk2-pytools to support cross platform building and execution.

Core CI

Focused on building and testing all packages in Edk2 without an actual target platform.

See .pytools/ReadMe.py for more details

Platform CI

Focused on building a single target platform and confirming functionality on that platform.

Conventions

  • Files extension should be *.yml. *.yaml is also supported but in Edk2 we use those for our package configuration.
  • Platform CI files should be in the <PlatformPkg>/.azurepipelines folder.
  • Core CI files are in the root folder.
  • Shared templates are in the templates folder.
  • Top level CI files should be named <host os>-<tool_chain>.yml
    • The pipeline YAML file name is referenced in Azure Pipelines. To allow flexibility for toolchain updates in the YAML file without necessitating changes in Azure Pipelines, the toolchain version is not included in the filename. For example, Windows-VS.yml is used instead of Windows-VS2026.yml.

Lessons Learned

Templates and parameters

They are great but evil. If they are used as part of determining the steps of a build they must resolve before the build starts. They can not use variables set in a yml or determined as part of a matrix. If they are used in a step then they can be bound late.

File matching patterns

On Linux this can hang if there are too many files in the search list.

Templates and file splitting

Suggestion is to do one big yaml file that does what you want for one of your targets. Then do the second one and find the deltas. From that you can start to figure out the right split of files, steps, jobs.

Conditional steps

If you want the step to show up in the log but not run, use a step conditional. This is great when a platform doesn't currently support a feature but you want the builders to know that the features exists and maybe someday it will.

If you want the step to not show up use a template step conditional wrapper. Beware this will be evaluated early (at build start). This can hide things not needed on a given OS for example.