pr-gate-build-job.yml 4.2 KB

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