1 | # CI Templates
|
---|
2 |
|
---|
3 | This folder contains azure pipeline yml templates for "Core" and "Platform" Continuous Integration and PR validation.
|
---|
4 |
|
---|
5 | ## Common CI templates
|
---|
6 |
|
---|
7 | ### basetools-build-steps.yml
|
---|
8 |
|
---|
9 | This template compiles the Edk2 basetools from source. The steps in this template are
|
---|
10 | conditional and will only run if variable `pkg_count` is greater than 0.
|
---|
11 |
|
---|
12 | It also has two conditional steps only used when the toolchain contains GCC. These two steps
|
---|
13 | use `apt` to update the system packages and add those necessary for Edk2 builds.
|
---|
14 |
|
---|
15 | ## Core CI templates
|
---|
16 |
|
---|
17 | ### pr-gate-build-job.yml
|
---|
18 |
|
---|
19 | This templates contains the jobs and most importantly the matrix of which packages and
|
---|
20 | targets to run for Core CI.
|
---|
21 |
|
---|
22 | ### pr-gate-steps.yml
|
---|
23 |
|
---|
24 | This template is the main Core CI template. It controls all the steps run and is responsible for most functionality of the Core CI process. This template sets
|
---|
25 | the `pkg_count` variable using the `stuart_pr_eval` tool when the
|
---|
26 | build type is "pull request"
|
---|
27 |
|
---|
28 | ### spell-check-prereq-steps.yml
|
---|
29 |
|
---|
30 | This template installs the node based tools used by the spell checker plugin. The steps
|
---|
31 | in this template are conditional and will only run if variable `pkg_count` is greater than 0.
|
---|
32 |
|
---|
33 | ## Platform CI templates
|
---|
34 |
|
---|
35 | ### platform-build-run-steps.yml
|
---|
36 |
|
---|
37 | This template makes heavy use of pytools to build and run a platform in the Edk2 repo
|
---|
38 |
|
---|
39 | Also uses basetools-build-steps.yml to compile basetools
|
---|
40 |
|
---|
41 | #### Special Notes
|
---|
42 |
|
---|
43 | * For a build type of pull request it will conditionally build if the patches change files that impact the platform.
|
---|
44 | * uses `stuart_pr_eval` to determine impact
|
---|
45 | * For manual builds or CI builds it will always build the platform
|
---|
46 | * It compiles basetools from source
|
---|
47 | * Will use `stuart_build --FlashOnly` to attempt to run the built image if the `Run` parameter is set.
|
---|
48 | * See the parameters block for expected configuration options
|
---|
49 | * Parameter `extra_install_step` allows the caller to insert extra steps. This is useful if additional dependencies, tools, or other things need to be installed. Here is an example of installing qemu on Windows.
|
---|
50 |
|
---|
51 | ``` yaml
|
---|
52 | steps:
|
---|
53 | - template: ../../.azurepipelines/templates/build-run-steps.yml
|
---|
54 | parameters:
|
---|
55 | extra_install_step:
|
---|
56 | - powershell: choco install qemu; Write-Host "##vso[task.prependpath]c:\Program Files\qemu"
|
---|
57 | displayName: Install QEMU and Set QEMU on path # friendly name displayed in the UI
|
---|
58 | condition: and(gt(variables.pkg_count, 0), succeeded())
|
---|
59 | ```
|
---|