jobs.job.strategy 定义
此作业的执行策略。
实现形式
实现 | 描述 |
---|---|
策略:matrix、maxParallel | 矩阵作业策略。 |
策略:parallel | 并行作业策略。 |
策略:matrix、maxParallel
使用矩阵会生成作业的副本,每个副本具有不同的输入。 这些副本可用于针对不同的配置或平台版本进行测试。
strategy:
matrix: # Matrix defining the job strategy; see the following examples.
{ string1: { string2: string3 }
maxParallel: string # Maximum number of jobs running in parallel.
属性
matrix
{ string1: { string2: string3 }。
定义作业策略的矩阵;请参阅以下示例。
maxParallel
字符串。
并行运行的最大作业数。
注解
strategy:
matrix: { string1: { string2: string3 } }
maxParallel: number
对于矩阵中 string1 的匹配项,将生成作业的一个副本。 名称 string1 是该副本的名称,并追加到作业的名称中。 对于 string2 的每个匹配项,作业可以使用名为 string2、值为 string3 的变量。
注意
矩阵配置名称只能包含基本拉丁字母(A-Z 和 a-z)、数字 (0-9) 以及下划线 (_
) 。
它们必须以字母开头。
此外,其长度必须为 100 个字符或更少。
可选的 maxParallel
关键字指定要同时运行的最大同时矩阵支线数。
如果 maxParallel
未指定或设置为 0,则不应用任何限制。
如果 maxParallel
未指定,则不应用任何限制。
注意
matrix
语法不支持自动作业缩放,但可以使用 each
关键字实现类似的功能。 有关示例,请参阅表达式。
示例
在多个平台上生成
此示例使用 matrix
作业策略在多个平台上构建。
# Build NodeJS Express app using Azure Pipelines
# https://learn.microsoft.com/azure/devops/pipelines/ecosystems/javascript?view=azure-devops
strategy:
matrix:
linux:
imageName: 'ubuntu-latest'
mac:
imageName: 'macOS-latest'
windows:
imageName: 'windows-latest'
pool:
vmImage: $(imageName)
steps:
- task: NodeTool@0
inputs:
versionSpec: '8.x'
- script: |
npm install
npm test
- task: PublishTestResults@2
inputs:
testResultsFiles: '**/TEST-RESULTS.xml'
testRunTitle: 'Test results for JavaScript'
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/*coverage.xml'
reportDirectory: '$(System.DefaultWorkingDirectory)/**/coverage'
- task: ArchiveFiles@2
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
- task: PublishBuildArtifacts@1
此管道使用 脚本 在每个平台的整体脚本解释器中运行:MacOS 和 Linux 上的 Bash、Windows 上的 CMD。 有关详细信息,请参阅多平台脚本。
使用自承载代理和 Microsoft 托管代理在多个平台上构建
以下示例通过同时指定 vmImage
和 Pool
变量,在自承载代理和 Microsoft 托管代理上构建,如以下示例所示。 对于托管代理,请指定 Azure Pipelines
作为池名称,对于自承载代理,则将 vmImage
留空。 如果自承载代理 vmImage
空白,可能会导致日志中出现一些异常条目,但它们不会影响管道。
strategy:
matrix:
microsofthosted:
poolName: Azure Pipelines
vmImage: ubuntu-latest
selfhosted:
poolName: FabrikamPool
vmImage:
pool:
name: $(poolName)
vmImage: $(vmImage)
steps:
- checkout: none
- script: echo test
使用不同的 Python 版本生成
jobs:
- job: Build
strategy:
matrix:
Python35:
PYTHON_VERSION: '3.5'
Python36:
PYTHON_VERSION: '3.6'
Python37:
PYTHON_VERSION: '3.7'
maxParallel: 2
此矩阵将创建三个作业:“生成 Python35”、“生成 Python36”和“生成 Python37”。在每个作业中,都有一个名为 PYTHON_VERSION 的变量。 在“生成 Python35”中,该变量设置为“3.5”。 同理,在“生成 Python36”中,它设置为“3.6”。只有两个作业同时运行。
策略:parallel
并行作业策略指定作业应运行的副本数。
strategy:
parallel: string # Run the job this many times.
属性
parallel
字符串。
多次运行作业。
注解
并行作业策略可用于切片大型测试矩阵。 Visual Studio 测试任务了解如何将测试负载划分到计划的作业数中。
示例
jobs:
- job: SliceItFourWays
strategy:
parallel: 4