]> git.proxmox.com Git - mirror_edk2.git/blame - .azurepipelines/templates/pr-gate-build-job.yml
CI: Allow running in a container.
[mirror_edk2.git] / .azurepipelines / templates / pr-gate-build-job.yml
CommitLineData
106c7a99
SB
1## @file\r
2# File templates/pr-gate-build-job.yml\r
3#\r
4# template file used to build supported packages.\r
5#\r
6# Copyright (c) Microsoft Corporation.\r
d4a3490a 7# Copyright (c) 2020 - 2021, ARM Limited. All rights reserved.<BR>\r
106c7a99
SB
8# SPDX-License-Identifier: BSD-2-Clause-Patent\r
9##\r
10\r
11parameters:\r
12 tool_chain_tag: ''\r
13 vm_image: ''\r
14 arch_list: ''\r
89c5d900 15 extra_install_step: []\r
35795517 16 usePythonVersion: ''\r
36d7626a 17 container: ''\r
106c7a99
SB
18\r
19# Build step\r
20jobs:\r
21\r
22- job: Build_${{ parameters.tool_chain_tag }}\r
76a1ce4d 23 timeoutInMinutes: 120\r
106c7a99
SB
24 #Use matrix to speed up the build process\r
25 strategy:\r
26 matrix:\r
12973359
MK
27 ${{ if eq(parameters.tool_chain_tag, 'GCC5') }}:\r
28 TARGET_GCC_ONLY:\r
29 Build.Pkgs: 'EmbeddedPkg'\r
30 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
01c0ab90
PG
31 TARGET_ARM_ARMPLATFORM:\r
32 Build.Pkgs: 'ArmPkg,ArmPlatformPkg'\r
7c4f05dc 33 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
106c7a99
SB
34 TARGET_MDE_CPU:\r
35 Build.Pkgs: 'MdePkg,UefiCpuPkg'\r
e5b911d4 36 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
106c7a99
SB
37 TARGET_MDEMODULE_DEBUG:\r
38 Build.Pkgs: 'MdeModulePkg'\r
e5b911d4 39 Build.Targets: 'DEBUG,NOOPT'\r
106c7a99
SB
40 TARGET_MDEMODULE_RELEASE:\r
41 Build.Pkgs: 'MdeModulePkg'\r
42 Build.Targets: 'RELEASE,NO-TARGET'\r
43 TARGET_NETWORK:\r
19c87b7d 44 Build.Pkgs: 'NetworkPkg,RedfishPkg'\r
ee582858 45 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
106c7a99 46 TARGET_OTHER:\r
710f83b7 47 Build.Pkgs: 'PcAtChipsetPkg,PrmPkg,ShellPkg,SourceLevelDebugPkg,StandaloneMmPkg,SignedCapsulePkg'\r
ee582858 48 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
e5b911d4 49 TARGET_FMP_FAT_TEST:\r
5a6d764e 50 Build.Pkgs: 'FmpDevicePkg,FatPkg,UnitTestFrameworkPkg,DynamicTablesPkg'\r
e5b911d4 51 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
106c7a99
SB
52 TARGET_CRYPTO:\r
53 Build.Pkgs: 'CryptoPkg'\r
73e3cb6c 54 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
769879e2
MK
55 TARGET_FSP:\r
56 Build.Pkgs: 'IntelFsp2Pkg,IntelFsp2WrapperPkg'\r
57 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
106c7a99
SB
58 TARGET_SECURITY:\r
59 Build.Pkgs: 'SecurityPkg'\r
ee582858 60 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
e3ee8c8d 61 TARGET_UEFIPAYLOAD:\r
62 Build.Pkgs: 'UefiPayloadPkg'\r
ee582858 63 Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT'\r
099dfbb2
SB
64 TARGET_PLATFORMS:\r
65 # For Platforms only check code. Leave it to Platform CI\r
66 # to build them.\r
67 Build.Pkgs: 'ArmVirtPkg,EmulatorPkg,OvmfPkg'\r
ee582858 68 Build.Targets: 'NO-TARGET,NOOPT'\r
106c7a99
SB
69\r
70 workspace:\r
71 clean: all\r
72\r
73 pool:\r
74 vmImage: ${{ parameters.vm_image }}\r
75\r
36d7626a
OS
76 ${{ if not(eq(parameters.container, '')) }}:\r
77 container: ${{ parameters.container }}\r
78\r
106c7a99
SB
79 steps:\r
80 - template: pr-gate-steps.yml\r
81 parameters:\r
82 tool_chain_tag: ${{ parameters.tool_chain_tag }}\r
83 build_pkgs: $(Build.Pkgs)\r
84 build_targets: $(Build.Targets)\r
85 build_archs: ${{ parameters.arch_list }}\r
35795517 86 usePythonVersion: ${{ parameters.usePythonVersion }}\r
89c5d900
GG
87 extra_install_step: ${{ parameters.extra_install_step }}\r
88\r
89- job: Build_${{ parameters.tool_chain_tag }}_TARGET_CODE_COVERAGE\r
90 dependsOn: Build_${{ parameters.tool_chain_tag }}\r
91 workspace:\r
92 clean: all\r
93\r
94 pool:\r
95 vmImage: 'windows-2019'\r
96\r
97 steps:\r
98 - checkout: self\r
99 clean: true\r
100 fetchDepth: 1\r
101 submodules: true\r
102\r
103 - task: DownloadPipelineArtifact@2\r
104 displayName: 'Download Build Artifacts'\r
105 inputs:\r
106 buildType: 'current'\r
107 targetPath: '$(Build.ArtifactStagingDirectory)'\r
108\r
8c235780
GG
109 - powershell: Write-Host "##vso[task.setvariable variable=is_code_coverage]0"\r
110 displayName: Give default value for whether CodeCoverage or not\r
111\r
112 - powershell: if (Test-Path -Path $(Build.ArtifactStagingDirectory)/**/coverage.xml) {Write-Host "##vso[task.setvariable variable=is_code_coverage]1"}\r
113 displayName: Check coverage.xml exist or not\r
114\r
89c5d900
GG
115 - task: CmdLine@2\r
116 displayName: Create code coverage report\r
117 inputs:\r
118 script: |\r
119 dotnet tool install -g dotnet-reportgenerator-globaltool\r
120 reportgenerator -reports:$(Build.ArtifactStagingDirectory)/**/coverage.xml -targetdir:$(Build.ArtifactStagingDirectory)/Coverage -reporttypes:Cobertura -filefilters:-*Build*;-*UnitTest*;-*Mock*;-*usr*\r
8c235780 121 condition: eq(variables.is_code_coverage, 1)\r
89c5d900
GG
122\r
123 - task: PublishCodeCoverageResults@1\r
124 displayName: 'Publish code coverage'\r
125 inputs:\r
126 codeCoverageTool: Cobertura\r
127 summaryFileLocation: '$(Build.ArtifactStagingDirectory)/Coverage/Cobertura.xml'\r
8c235780 128 condition: eq(variables.is_code_coverage, 1)\r
89c5d900 129\r