jobs.job.strategy の定義
このジョブの実行戦略。
実装
実装 | 説明 |
---|---|
戦略: 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