mirror of https://github.com/acidanthera/audk.git
151 lines
4.6 KiB
YAML
151 lines
4.6 KiB
YAML
|
|
## @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()
|