次の方法で共有


jobs.job.strategy の定義

このジョブの実行戦略。

この定義を参照する定義: パイプラインjobs.job

実装

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

注釈

後続のジョブ内のジョブから変数にアクセスするには、「マルチジョブ出力変数設定する」を参照してください。

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

マトリックス内で 文字列 1 が出現するたびに、ジョブのコピーが生成されます。 string1 名前はコピーの名前であり、ジョブの名前に追加されます。 string2が出現するたびに、string2 という名前の変数と、文字列 3 の値をジョブで使用できます。

マトリックス構成名には、基本的なラテンアルファベット (A ~ Z および a ~ z)、数字 (0 から 9)、アンダースコア (_) のみを含める必要があります。 文字で始める必要があります。 また、長さは 100 文字以下にする必要があります。

省略可能な maxParallel キーワードは、一度に実行する同時マトリックス 脚の最大数を指定します。

maxParallel が指定されていないか、0 に設定されている場合、制限は適用されません。

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

このパイプラインでは、スクリプト を使用して、各プラットフォームの不可欠なスクリプト インタープリターである Bash on macOS および Linux、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

このマトリックスでは、"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