jobs.job.strategy の定義

このジョブの実行戦略。

この定義を参照する定義: pipelinejobs.job

実装

実装 説明
戦略: matrix、maxParallel マトリックス ジョブ戦略。
戦略: 並列 並列ジョブ戦略。

戦略: 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 が出現するたびに、string3 という値を持つ string2 という変数をジョブで使用できます。

注意

マトリックス構成名には、基本的なラテン アルファベット文字 (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 上の Bash と Linux、Windows 上の CMD) で実行します。 詳しくは、マルチプラットフォーム スクリプトに関する記事をご覧ください。

セルフホステッド エージェントと Microsoft ホステッド エージェントを使用して複数のプラットフォームで構築する

次の例では、次の例のように、 と 変数の両方を指定して、セルフホステッド エージェントと Pool Microsoft ホステッド エージェントの両方vmImageに基づいて構築します。 ホステッド エージェントの場合はプール名として 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

このマトリックスでは、"Build Python35"、"Build Python36"、"Build Python37" という 3 つのジョブが作成されます。各ジョブ内では、PYTHON_VERSION という名前の変数を使用できます。 "Build Python35" では、変数は "3.5" に設定されています。 同様に、"Build Python36" では "3.6" に設定されます。同時に実行されるジョブは 2 つだけです。

戦略: 並列

並列ジョブ戦略では、実行するジョブの重複の数を指定します。

strategy:
  parallel: string # Run the job this many times.

プロパティ

parallel 文字列。
ジョブを何度も実行します。

解説

並列ジョブ戦略は、大きなテスト マトリックスをスライスする場合に便利です。 Visual Studio テスト タスクは、スケジュールされたジョブの数にテスト負荷を分割する方法を理解しています。

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4