## @file | |
# File steps.yml | |
# | |
# template file containing the steps to build | |
# | |
# Copyright (c) Microsoft Corporation. | |
# SPDX-License-Identifier: BSD-2-Clause-Patent | |
## | |
parameters: | |
- name: tool_chain_tag | |
type: string | |
default: '' | |
- name: build_pkg | |
type: string | |
default: '' | |
- name: build_target | |
type: string | |
default: '' | |
- name: build_arch | |
type: string | |
default: '' | |
- name: build_file | |
type: string | |
default: '' | |
- name: build_flags | |
type: string | |
default: '' | |
- name: run_flags | |
type: string | |
default: '' | |
- name: extra_install_step | |
type: stepList | |
default: [] | |
- name: usePythonVersion | |
type: string | |
default: '' | |
steps: | |
- bash: | | |
echo "##vso[task.prependpath]${HOME}/.local/bin" | |
echo "new PATH=${PATH}" | |
displayName: Set PATH | |
condition: eq('${{ parameters.tool_chain_tag }}', 'GCC5') | |
- checkout: self | |
clean: true | |
fetchDepth: 1 | |
- task: UsePythonVersion@0 | |
inputs: | |
versionSpec: ${{ parameters.usePythonVersion }} | |
architecture: "x64" | |
condition: ne('${{ parameters.usePythonVersion }}', '') | |
- script: pip install -r pip-requirements.txt --upgrade | |
displayName: 'Install/Upgrade pip modules' | |
# Set default | |
- bash: echo "##vso[task.setvariable variable=pkg_count]${{ 1 }}" | |
# Fetch the target branch so that pr_eval can diff them. | |
# Seems like azure pipelines/github changed checkout process in nov 2020. | |
- script: git fetch origin $(System.PullRequest.targetBranch) | |
displayName: fetch target branch | |
condition: eq(variables['Build.Reason'], 'PullRequest') | |
# trim the package list if this is a PR | |
- task: CmdLine@1 | |
displayName: Check if ${{ parameters.build_pkg }} need testing | |
inputs: | |
filename: stuart_pr_eval | |
arguments: -c ${{ parameters.build_file }} -t ${{ parameters.build_target}} -a ${{ parameters.build_arch}} --pr-target origin/$(System.PullRequest.targetBranch) --output-count-format-string "##vso[task.setvariable variable=pkg_count;isOutpout=true]{pkgcount}" | |
condition: eq(variables['Build.Reason'], 'PullRequest') | |
# Setup repo | |
- task: CmdLine@1 | |
displayName: Setup | |
inputs: | |
filename: stuart_setup | |
arguments: -c ${{ parameters.build_file }} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} -t ${{ parameters.build_target}} -a ${{ parameters.build_arch}} ${{ parameters.build_flags}} | |
condition: and(gt(variables.pkg_count, 0), succeeded()) | |
# Stuart Update | |
- task: CmdLine@1 | |
displayName: Update | |
inputs: | |
filename: stuart_update | |
arguments: -c ${{ parameters.build_file }} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} -t ${{ parameters.build_target}} -a ${{ parameters.build_arch}} ${{ parameters.build_flags}} | |
condition: and(gt(variables.pkg_count, 0), succeeded()) | |
# build basetools | |
# do this after setup and update so that code base dependencies | |
# are all resolved. | |
- template: basetools-build-steps.yml | |
parameters: | |
tool_chain_tag: ${{ parameters.tool_chain_tag }} | |
# Potential Extra steps | |
- ${{ parameters.extra_install_step }} | |
# Build | |
- task: CmdLine@1 | |
displayName: Build | |
inputs: | |
filename: stuart_build | |
arguments: -c ${{ parameters.build_file }} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} TARGET=${{ parameters.build_target}} -a ${{ parameters.build_arch}} ${{ parameters.build_flags}} | |
condition: and(gt(variables.pkg_count, 0), succeeded()) | |
# Run | |
- task: CmdLine@1 | |
displayName: Run to shell | |
inputs: | |
filename: stuart_build | |
arguments: -c ${{ parameters.build_file }} TOOL_CHAIN_TAG=${{ parameters.tool_chain_tag}} TARGET=${{ parameters.build_target}} -a ${{ parameters.build_arch}} ${{ parameters.build_flags}} ${{ parameters.run_flags }} --FlashOnly | |
condition: and(and(gt(variables.pkg_count, 0), succeeded()), eq(variables['Run'], true)) | |
timeoutInMinutes: 2 | |
# 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 | |
BASETOOLS_BUILD*.* | |
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() |