summaryrefslogtreecommitdiff
path: root/.azurepipelines/templates/platform-build-run-steps.yml
blob: 97e7faa266825563df97284b3e6f05f49e72d159 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

## @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: []

steps:
- checkout: self
  clean: true
  fetchDepth: 1

- task: UsePythonVersion@0
  inputs:
    versionSpec: "3.8.x"
    architecture: "x64"

- 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: 1

# 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()