jobs.job.strategy 定义

此作业的执行策略。

引用此定义的定义: pipelinejobs.job

实现形式

实现 描述
策略: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 托管代理在多个平台上构建

以下示例通过同时指定 vmImagePool 变量,在自承载代理和 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