## @file # File templates/pr-gate-build-job.yml # # template file used to build supported packages. # # Copyright (c) Microsoft Corporation. # Copyright (c) 2020 - 2021, ARM Limited. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent ## parameters: tool_chain_tag: '' vm_image: '' arch_list: '' extra_install_step: [] usePythonVersion: '' container: '' # Build step jobs: - job: Build_${{ parameters.tool_chain_tag }} timeoutInMinutes: 120 #Use matrix to speed up the build process strategy: matrix: ${{ if eq(parameters.tool_chain_tag, 'GCC5') }}: TARGET_GCC_ONLY: Build.Pkgs: 'EmbeddedPkg' Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' TARGET_ARM_ARMPLATFORM: Build.Pkgs: 'ArmPkg,ArmPlatformPkg' Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' TARGET_MDE_CPU: Build.Pkgs: 'MdePkg,UefiCpuPkg' Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' TARGET_MDEMODULE_DEBUG: Build.Pkgs: 'MdeModulePkg' Build.Targets: 'DEBUG,NOOPT' TARGET_MDEMODULE_RELEASE: Build.Pkgs: 'MdeModulePkg' Build.Targets: 'RELEASE,NO-TARGET' TARGET_NETWORK: Build.Pkgs: 'NetworkPkg,RedfishPkg' Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' TARGET_OTHER: Build.Pkgs: 'PcAtChipsetPkg,PrmPkg,ShellPkg,SourceLevelDebugPkg,StandaloneMmPkg,SignedCapsulePkg' Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' TARGET_FMP_FAT_TEST: Build.Pkgs: 'FmpDevicePkg,FatPkg,UnitTestFrameworkPkg,DynamicTablesPkg' Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' TARGET_CRYPTO_DEBUG: Build.Pkgs: 'CryptoPkg' Build.Targets: 'DEBUG,NOOPT' TARGET_CRYPTO_RELEASE: Build.Pkgs: 'CryptoPkg' Build.Targets: 'RELEASE,NO-TARGET' TARGET_FSP: Build.Pkgs: 'IntelFsp2Pkg,IntelFsp2WrapperPkg' Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' TARGET_SECURITY: Build.Pkgs: 'SecurityPkg' Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' TARGET_UEFIPAYLOAD: Build.Pkgs: 'UefiPayloadPkg' Build.Targets: 'DEBUG,RELEASE,NO-TARGET,NOOPT' 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' workspace: clean: all pool: vmImage: ${{ parameters.vm_image }} ${{ if not(eq(parameters.container, '')) }}: container: ${{ parameters.container }} steps: - template: pr-gate-steps.yml parameters: tool_chain_tag: ${{ parameters.tool_chain_tag }} build_pkgs: $(Build.Pkgs) build_targets: $(Build.Targets) build_archs: ${{ parameters.arch_list }} usePythonVersion: ${{ parameters.usePythonVersion }} extra_install_step: ${{ parameters.extra_install_step }} - job: Build_${{ parameters.tool_chain_tag }}_TARGET_CODE_COVERAGE dependsOn: Build_${{ parameters.tool_chain_tag }} workspace: clean: all pool: vmImage: 'windows-2019' steps: - checkout: self clean: true fetchDepth: 1 submodules: true - task: DownloadPipelineArtifact@2 displayName: 'Download Build Artifacts' inputs: buildType: 'current' targetPath: '$(Build.ArtifactStagingDirectory)' - powershell: Write-Host "##vso[task.setvariable variable=is_code_coverage]0" displayName: Give default value for whether CodeCoverage or not - powershell: if (Test-Path -Path $(Build.ArtifactStagingDirectory)/**/coverage.xml) {Write-Host "##vso[task.setvariable variable=is_code_coverage]1"} displayName: Check coverage.xml exist or not - task: CmdLine@2 displayName: Create code coverage report inputs: script: | dotnet tool install -g dotnet-reportgenerator-globaltool reportgenerator -reports:$(Build.ArtifactStagingDirectory)/**/coverage.xml -targetdir:$(Build.ArtifactStagingDirectory)/Coverage -reporttypes:Cobertura -filefilters:-*Build*;-*UnitTest*;-*Mock*;-*usr* condition: eq(variables.is_code_coverage, 1) - task: PublishCodeCoverageResults@1 displayName: 'Publish code coverage' inputs: codeCoverageTool: Cobertura summaryFileLocation: '$(Build.ArtifactStagingDirectory)/Coverage/Cobertura.xml' condition: eq(variables.is_code_coverage, 1)