]> git.proxmox.com Git - mirror_edk2.git/blame - .azurepipelines/templates/pr-gate-steps.yml
.azurepipelines: Install code coverage tool
[mirror_edk2.git] / .azurepipelines / templates / pr-gate-steps.yml
CommitLineData
106c7a99
SB
1## @file\r
2# File templates/pr-gate-steps.yml\r
3#\r
4# template file containing the steps to build\r
5#\r
6# Copyright (c) Microsoft Corporation.\r
7# SPDX-License-Identifier: BSD-2-Clause-Patent\r
8##\r
9\r
10parameters:\r
11 tool_chain_tag: ''\r
12 build_pkgs: ''\r
13 build_targets: ''\r
14 build_archs: ''\r
89c5d900 15 extra_install_step: []\r
106c7a99
SB
16\r
17steps:\r
18- checkout: self\r
19 clean: true\r
20 fetchDepth: 1\r
21\r
22- task: UsePythonVersion@0\r
23 inputs:\r
383d3415 24 versionSpec: '>=3.10.6'\r
106c7a99
SB
25 architecture: 'x64'\r
26\r
27- script: pip install -r pip-requirements.txt --upgrade\r
28 displayName: 'Install/Upgrade pip modules'\r
29\r
30# Set default\r
31- bash: |\r
32 echo "##vso[task.setvariable variable=pkgs_to_build]${{ parameters.build_pkgs }}"\r
33 echo "##vso[task.setvariable variable=pkg_count]${{ 1 }}"\r
39161090
SB
34\r
35# Fetch the target branch so that pr_eval can diff them.\r
36# Seems like azure pipelines/github changed checkout process in nov 2020.\r
37- script: git fetch origin $(System.PullRequest.targetBranch)\r
38 displayName: fetch target branch\r
39 condition: eq(variables['Build.Reason'], 'PullRequest')\r
106c7a99 40\r
89c5d900
GG
41- ${{ parameters.extra_install_step }}\r
42\r
106c7a99
SB
43# trim the package list if this is a PR\r
44- task: CmdLine@1\r
45 displayName: Check if ${{ parameters.build_pkgs }} need testing\r
46 inputs:\r
47 filename: stuart_pr_eval\r
48 arguments: -c .pytool/CISettings.py -p ${{ parameters.build_pkgs }} --pr-target origin/$(System.PullRequest.targetBranch) --output-csv-format-string "##vso[task.setvariable variable=pkgs_to_build;isOutpout=true]{pkgcsv}" --output-count-format-string "##vso[task.setvariable variable=pkg_count;isOutpout=true]{pkgcount}"\r
49 condition: eq(variables['Build.Reason'], 'PullRequest')\r
50\r
106c7a99
SB
51# install spell check prereqs\r
52- template: spell-check-prereq-steps.yml\r
53\r
54# Build repo\r
55- task: CmdLine@1\r
56 displayName: Setup ${{ parameters.build_pkgs }} ${{ parameters.build_archs}}\r
57 inputs:\r
58 filename: stuart_setup\r
59 arguments: -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ parameters.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}}\r
60 condition: and(gt(variables.pkg_count, 0), succeeded())\r
61\r
62- task: CmdLine@1\r
63 displayName: Update ${{ parameters.build_pkgs }} ${{ parameters.build_archs}}\r
64 inputs:\r
65 filename: stuart_update\r
66 arguments: -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ parameters.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}}\r
67 condition: and(gt(variables.pkg_count, 0), succeeded())\r
68\r
e1fbff3d
SB
69# build basetools\r
70# do this after setup and update so that code base dependencies\r
71# are all resolved.\r
72- template: basetools-build-steps.yml\r
73 parameters:\r
74 tool_chain_tag: ${{ parameters.tool_chain_tag }}\r
75\r
106c7a99
SB
76- task: CmdLine@1\r
77 displayName: Build and Test ${{ parameters.build_pkgs }} ${{ parameters.build_archs}}\r
78 inputs:\r
79 filename: stuart_ci_build\r
80 arguments: -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ parameters.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}}\r
81 condition: and(gt(variables.pkg_count, 0), succeeded())\r
82\r
83# Publish Test Results to Azure Pipelines/TFS\r
84- task: PublishTestResults@2\r
85 displayName: 'Publish junit test results'\r
86 continueOnError: true\r
87 condition: and( succeededOrFailed(),gt(variables.pkg_count, 0))\r
88 inputs:\r
89 testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit\r
90 testResultsFiles: 'Build/TestSuites.xml'\r
91 #searchFolder: '$(System.DefaultWorkingDirectory)' # Optional\r
92 mergeTestResults: true # Optional\r
93 testRunTitle: $(System.JobName) # Optional\r
94 #buildPlatform: # Optional\r
95 #buildConfiguration: # Optional\r
96 publishRunAttachments: true # Optional\r
97\r
98# Publish Test Results to Azure Pipelines/TFS\r
99- task: PublishTestResults@2\r
100 displayName: 'Publish host based test results for $(System.JobName)'\r
101 continueOnError: true\r
102 condition: and( succeededOrFailed(), gt(variables.pkg_count, 0))\r
103 inputs:\r
104 testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit\r
105 testResultsFiles: 'Build/**/*.result.xml'\r
106 #searchFolder: '$(System.DefaultWorkingDirectory)' # Optional\r
107 mergeTestResults: false # Optional\r
108 testRunTitle: ${{ parameters.build_pkgs }} # Optional\r
109 #buildPlatform: # Optional\r
110 #buildConfiguration: # Optional\r
111 publishRunAttachments: true # Optional\r
112\r
113# Copy the build logs to the artifact staging directory\r
114- task: CopyFiles@2\r
115 displayName: "Copy build logs"\r
116 inputs:\r
117 targetFolder: '$(Build.ArtifactStagingDirectory)'\r
118 SourceFolder: 'Build'\r
119 contents: |\r
120 BUILDLOG_*.txt\r
121 BUILDLOG_*.md\r
122 CI_*.txt\r
123 CI_*.md\r
124 CISETUP.txt\r
125 SETUPLOG.txt\r
126 UPDATE_LOG.txt\r
127 PREVALLOG.txt\r
128 TestSuites.xml\r
129 **/BUILD_TOOLS_REPORT.html\r
130 **/OVERRIDELOG.TXT\r
89c5d900 131 coverage.xml\r
106c7a99
SB
132 flattenFolders: true\r
133 condition: succeededOrFailed()\r
134\r
135# Publish build artifacts to Azure Artifacts/TFS or a file share\r
136- task: PublishBuildArtifacts@1\r
137 continueOnError: true\r
138 displayName: "Publish build logs"\r
139 inputs:\r
140 pathtoPublish: '$(Build.ArtifactStagingDirectory)'\r
141 artifactName: 'Build Logs $(System.JobName)'\r
142 condition: succeededOrFailed()\r