forked from tianocore/edk2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
.azurepipelines: Add Azure Pipelines YML configuration files
https://bugzilla.tianocore.org/show_bug.cgi?id=2315 Add YML configuration files used to run the EDK II Continuous Integration (CI) checks on Azure Pipelines agents. Cc: Sean Brogan <[email protected]> Cc: Bret Barkelew <[email protected]> Cc: Liming Gao <[email protected]> Signed-off-by: Michael D Kinney <[email protected]> Reviewed-by: Liming Gao <[email protected]>
- Loading branch information
Showing
7 changed files
with
340 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
## @file | ||
# Azure Pipeline build file for a build using ubuntu and GCC5 | ||
# | ||
# Copyright (c) Microsoft Corporation. | ||
# SPDX-License-Identifier: BSD-2-Clause-Patent | ||
## | ||
trigger: | ||
- master | ||
pr: | ||
- master | ||
|
||
jobs: | ||
- template: templates/pr-gate-build-job.yml | ||
parameters: | ||
tool_chain_tag: 'GCC5' | ||
vm_image: 'ubuntu-latest' | ||
arch_list: "IA32,X64,ARM,AARCH64" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
## @file | ||
# Azure Pipielines YML file that evalues the patch series in a PR using the | ||
# python script BaseTools/Scripts/PatchCheck.py. | ||
# | ||
# NOTE: This example monitors pull requests against the edk2-ci branch. Most | ||
# environments would replace 'edk2-ci' with 'master'. | ||
# | ||
# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> | ||
# SPDX-License-Identifier: BSD-2-Clause-Patent | ||
# | ||
# https://github.com/tianocore | ||
# | ||
## | ||
|
||
trigger: none | ||
|
||
pr: | ||
- master | ||
|
||
pool: | ||
vmImage: 'ubuntu-latest' | ||
|
||
steps: | ||
- checkout: self | ||
clean: true | ||
|
||
- task: UsePythonVersion@0 | ||
inputs: | ||
versionSpec: '3.7.x' | ||
architecture: 'x64' | ||
|
||
- script: | | ||
git fetch origin $(System.PullRequest.TargetBranch):$(System.PullRequest.TargetBranch) | ||
python BaseTools/Scripts/PatchCheck.py $(System.PullRequest.TargetBranch)..$(System.PullRequest.SourceCommitId) | ||
displayName: 'Use PatchCheck.py to verify patch series in pull request' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
## @file | ||
# Azure Pipeline build file for a build using Windows and VS2019 | ||
# | ||
# Copyright (c) Microsoft Corporation. | ||
# SPDX-License-Identifier: BSD-2-Clause-Patent | ||
## | ||
trigger: | ||
- master | ||
|
||
pr: | ||
- master | ||
|
||
jobs: | ||
- template: templates/pr-gate-build-job.yml | ||
parameters: | ||
tool_chain_tag: 'VS2019' | ||
vm_image: 'windows-latest' | ||
arch_list: "IA32,X64" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
## @file | ||
# File templates/basetools-build-job.yml | ||
# | ||
# template file to build basetools | ||
# | ||
# Copyright (c) Microsoft Corporation. | ||
# SPDX-License-Identifier: BSD-2-Clause-Patent | ||
## | ||
parameters: | ||
tool_chain_tag: '' | ||
|
||
steps: | ||
- ${{ if contains(parameters.tool_chain_tag, 'GCC') }}: | ||
- bash: sudo apt-get update | ||
displayName: Update apt | ||
condition: and(gt(variables.pkg_count, 0), succeeded()) | ||
|
||
- bash: sudo apt-get install gcc g++ make uuid-dev | ||
displayName: Install required tools | ||
condition: and(gt(variables.pkg_count, 0), succeeded()) | ||
|
||
- task: CmdLine@1 | ||
displayName: Build Base Tools from source | ||
inputs: | ||
filename: python | ||
arguments: BaseTools/Edk2ToolsBuild.py -t ${{ parameters.tool_chain_tag }} | ||
condition: and(gt(variables.pkg_count, 0), succeeded()) | ||
|
||
- task: CopyFiles@2 | ||
displayName: "Copy base tools build log" | ||
inputs: | ||
targetFolder: '$(Build.ArtifactStagingDirectory)' | ||
SourceFolder: 'BaseTools/BaseToolsBuild' | ||
contents: | | ||
BASETOOLS_BUILD*.* | ||
flattenFolders: true | ||
condition: and(gt(variables.pkg_count, 0), succeededOrFailed()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
## @file | ||
# File templates/pr-gate-build-job.yml | ||
# | ||
# template file used to build supported packages. | ||
# | ||
# Copyright (c) Microsoft Corporation. | ||
# SPDX-License-Identifier: BSD-2-Clause-Patent | ||
## | ||
|
||
parameters: | ||
tool_chain_tag: '' | ||
vm_image: '' | ||
arch_list: '' | ||
|
||
# Build step | ||
jobs: | ||
|
||
- job: Build_${{ parameters.tool_chain_tag }} | ||
|
||
#Use matrix to speed up the build process | ||
strategy: | ||
matrix: | ||
TARGET_MDE_CPU: | ||
Build.Pkgs: 'MdePkg,UefiCpuPkg' | ||
Build.Targets: 'DEBUG,RELEASE,NO-TARGET' | ||
TARGET_MDEMODULE_DEBUG: | ||
Build.Pkgs: 'MdeModulePkg' | ||
Build.Targets: 'DEBUG' | ||
TARGET_MDEMODULE_RELEASE: | ||
Build.Pkgs: 'MdeModulePkg' | ||
Build.Targets: 'RELEASE,NO-TARGET' | ||
TARGET_NETWORK: | ||
Build.Pkgs: 'NetworkPkg' | ||
Build.Targets: 'DEBUG,RELEASE,NO-TARGET' | ||
TARGET_OTHER: | ||
Build.Pkgs: 'PcAtChipsetPkg,ShellPkg' | ||
Build.Targets: 'DEBUG,RELEASE,NO-TARGET' | ||
TARGET_FMP: | ||
Build.Pkgs: 'FmpDevicePkg,FatPkg' | ||
Build.Targets: 'DEBUG,RELEASE,NO-TARGET' | ||
TARGET_CRYPTO: | ||
Build.Pkgs: 'CryptoPkg' | ||
Build.Targets: 'DEBUG,RELEASE,NO-TARGET' | ||
TARGET_SECURITY: | ||
Build.Pkgs: 'SecurityPkg' | ||
Build.Targets: 'DEBUG,RELEASE,NO-TARGET' | ||
|
||
workspace: | ||
clean: all | ||
|
||
pool: | ||
vmImage: ${{ parameters.vm_image }} | ||
|
||
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 }} | ||
|
||
- job: FINISHED | ||
dependsOn: Build_${{ parameters.tool_chain_tag }} | ||
condition: succeeded() | ||
steps: | ||
- checkout: none | ||
- script: | | ||
echo FINISHED | ||
sleep 10 | ||
displayName: FINISHED | ||
- job: FAILED | ||
dependsOn: Build_${{ parameters.tool_chain_tag }} | ||
condition: failed() | ||
steps: | ||
- checkout: none | ||
- script: | | ||
echo FAILED | ||
sleep 10 | ||
displayName: FAILED |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
## @file | ||
# File templates/pr-gate-steps.yml | ||
# | ||
# template file containing the steps to build | ||
# | ||
# Copyright (c) Microsoft Corporation. | ||
# SPDX-License-Identifier: BSD-2-Clause-Patent | ||
## | ||
|
||
parameters: | ||
tool_chain_tag: '' | ||
build_pkgs: '' | ||
build_targets: '' | ||
build_archs: '' | ||
|
||
steps: | ||
- checkout: self | ||
clean: true | ||
fetchDepth: 1 | ||
|
||
- task: UsePythonVersion@0 | ||
inputs: | ||
versionSpec: '3.7.x' | ||
architecture: 'x64' | ||
|
||
- script: pip install -r pip-requirements.txt --upgrade | ||
displayName: 'Install/Upgrade pip modules' | ||
|
||
# Set default | ||
- bash: | | ||
echo "##vso[task.setvariable variable=pkgs_to_build]${{ parameters.build_pkgs }}" | ||
echo "##vso[task.setvariable variable=pkg_count]${{ 1 }}" | ||
# trim the package list if this is a PR | ||
- task: CmdLine@1 | ||
displayName: Check if ${{ parameters.build_pkgs }} need testing | ||
inputs: | ||
filename: stuart_pr_eval | ||
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}" | ||
condition: eq(variables['Build.Reason'], 'PullRequest') | ||
|
||
# build basetools | ||
- template: basetools-build-steps.yml | ||
parameters: | ||
tool_chain_tag: ${{ parameters.tool_chain_tag }} | ||
|
||
# install spell check prereqs | ||
- template: spell-check-prereq-steps.yml | ||
|
||
# Build repo | ||
- task: CmdLine@1 | ||
displayName: Setup ${{ parameters.build_pkgs }} ${{ parameters.build_archs}} | ||
inputs: | ||
filename: stuart_setup | ||
arguments: -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ parameters.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} | ||
condition: and(gt(variables.pkg_count, 0), succeeded()) | ||
|
||
- task: CmdLine@1 | ||
displayName: Update ${{ parameters.build_pkgs }} ${{ parameters.build_archs}} | ||
inputs: | ||
filename: stuart_update | ||
arguments: -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ parameters.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} | ||
condition: and(gt(variables.pkg_count, 0), succeeded()) | ||
|
||
- task: CmdLine@1 | ||
displayName: Build and Test ${{ parameters.build_pkgs }} ${{ parameters.build_archs}} | ||
inputs: | ||
filename: stuart_ci_build | ||
arguments: -c .pytool/CISettings.py -p $(pkgs_to_build) -t ${{ parameters.build_targets}} -a ${{ parameters.build_archs}} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} | ||
condition: and(gt(variables.pkg_count, 0), succeeded()) | ||
|
||
# Publish Test Results to Azure Pipelines/TFS | ||
- task: PublishTestResults@2 | ||
displayName: 'Publish junit test results' | ||
continueOnError: true | ||
condition: and( succeededOrFailed(),gt(variables.pkg_count, 0)) | ||
inputs: | ||
testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit | ||
testResultsFiles: 'Build/TestSuites.xml' | ||
#searchFolder: '$(System.DefaultWorkingDirectory)' # Optional | ||
mergeTestResults: true # Optional | ||
testRunTitle: $(System.JobName) # Optional | ||
#buildPlatform: # Optional | ||
#buildConfiguration: # Optional | ||
publishRunAttachments: true # Optional | ||
|
||
# Publish Test Results to Azure Pipelines/TFS | ||
- task: PublishTestResults@2 | ||
displayName: 'Publish host based test results for $(System.JobName)' | ||
continueOnError: true | ||
condition: and( succeededOrFailed(), gt(variables.pkg_count, 0)) | ||
inputs: | ||
testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit | ||
testResultsFiles: 'Build/**/*.result.xml' | ||
#searchFolder: '$(System.DefaultWorkingDirectory)' # Optional | ||
mergeTestResults: false # Optional | ||
testRunTitle: ${{ parameters.build_pkgs }} # Optional | ||
#buildPlatform: # Optional | ||
#buildConfiguration: # Optional | ||
publishRunAttachments: true # Optional | ||
|
||
# Copy the build logs to the artifact staging directory | ||
- task: CopyFiles@2 | ||
displayName: "Copy build logs" | ||
inputs: | ||
targetFolder: '$(Build.ArtifactStagingDirectory)' | ||
SourceFolder: 'Build' | ||
contents: | | ||
BUILDLOG_*.txt | ||
BUILDLOG_*.md | ||
CI_*.txt | ||
CI_*.md | ||
CISETUP.txt | ||
SETUPLOG.txt | ||
UPDATE_LOG.txt | ||
PREVALLOG.txt | ||
TestSuites.xml | ||
**/BUILD_TOOLS_REPORT.html | ||
**/OVERRIDELOG.TXT | ||
flattenFolders: true | ||
condition: succeededOrFailed() | ||
|
||
# Publish build artifacts to Azure Artifacts/TFS or a file share | ||
- task: PublishBuildArtifacts@1 | ||
continueOnError: true | ||
displayName: "Publish build logs" | ||
inputs: | ||
pathtoPublish: '$(Build.ArtifactStagingDirectory)' | ||
artifactName: 'Build Logs $(System.JobName)' | ||
condition: succeededOrFailed() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
## @file | ||
# File templates/spell-check-prereq-steps.yml | ||
# | ||
# template file used to install spell checking prerequisits | ||
# | ||
# Copyright (c) Microsoft Corporation. | ||
# SPDX-License-Identifier: BSD-2-Clause-Patent | ||
## | ||
|
||
parameters: | ||
none: '' | ||
|
||
steps: | ||
- task: NodeTool@0 | ||
inputs: | ||
versionSpec: '10.x' | ||
#checkLatest: false # Optional | ||
condition: and(gt(variables.pkg_count, 0), succeeded()) | ||
|
||
- script: npm install -g cspell | ||
displayName: 'Install cspell npm' | ||
condition: and(gt(variables.pkg_count, 0), succeeded()) |