jobs.job.strategy definition

Ausführungsstrategie für diesen Auftrag.

Definitionen, die auf diese Definition verweisen: pipeline, jobs.job

Implementierungen

Implementierung Beschreibung
Strategie: matrix, maxParallel Matrixauftragsstrategie.
Strategie: parallel Strategie für parallele Aufträge.

Strategie: matrix, maxParallel

Die Verwendung einer Matrix generiert Kopien eines Auftrags mit jeweils unterschiedlichen Eingaben. Diese Kopien sind nützlich, um mit verschiedenen Konfigurationen oder Plattformversionen zu testen.

strategy:
  matrix: # Matrix defining the job strategy; see the following examples.
    { string1: { string2: string3 }
  maxParallel: string # Maximum number of jobs running in parallel.

Eigenschaften

matrix { string1: { string2: string3 }.
Matrix, die die Jobstrategie definiert; Sehen Sie sich die folgenden Beispiele an.

maxParallel Schnur.
Maximale Anzahl parallel ausgeführter Aufträge.

Hinweise

strategy:
  matrix: { string1: { string2: string3 } }
  maxParallel: number

Für jedes Vorkommen von string1 in der Matrix wird eine Kopie des Auftrags generiert. Der Name string1 ist der Name der Kopie und wird dem Namen des Auftrags angefügt. Für jedes Vorkommen von string2 steht dem Auftrag eine Variable namens string2 mit dem Wert string3 zur Verfügung.

Hinweis

Namen von Matrixkonfigurationen dürfen nur Buchstaben des lateinischen Alphabets (A-Z und a-z), Ziffern (0-9) und Unterstriche (_) enthalten. Der Name muss mit einem Buchstaben beginnen. Außerdem muss ihre Länge mindestens 100 Zeichen betragen.

Das optionale maxParallel-Schlüsselwort gibt die maximale Anzahl gleichzeitig auszuführender Matrixschenkel an.

Wenn maxParallel nicht angegeben oder auf 0 festgelegt ist, wird kein Grenzwert angewendet.

Wenn maxParallel nicht angegeben ist, wird kein Grenzwert angewendet.

Hinweis

Die matrix-Syntax unterstützt keine automatische Auftragsskalierung, Sie können jedoch ähnliche Funktionen mithilfe des each-Schlüsselworts implementieren. Ein Beispiel finden Sie unter Ausdrücke.

Beispiele

Erstellen auf mehreren Plattformen

In diesem Beispiel wird eine matrix Auftragsstrategie verwendet, um auf mehreren Plattformen aufzubauen.

# 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

Diese Pipeline verwendet Skripts , um im integralen Skriptinterpreter jeder Plattform auszuführen: Bash unter macOS und Linux, CMD unter Windows. Weitere Informationen finden Sie unter Skripts mit mehreren Plattformen .

Erstellen auf mehreren Plattformen mit selbstgehosteten und von Microsoft gehosteten Agents

Das folgende Beispiel baut sowohl auf einem selbstgehosteten Agent als auch auf einem von Microsoft gehosteten Agent auf, indem sowohl eine vmImage als auch eine Pool Variable angegeben werden, wie im folgenden Beispiel. Geben Sie Azure Pipelines für den gehosteten Agent als Poolnamen an, und lassen Sie vmImage für selbstgehostete Agents leer. Das leere vmImage für den selbstgehosteten Agent kann zu einigen ungewöhnlichen Einträgen in den Protokollen führen, wirkt sich jedoch nicht auf die Pipeline aus.

strategy:
  matrix:
    microsofthosted:
      poolName: Azure Pipelines
      vmImage: ubuntu-latest

    selfhosted:
      poolName: FabrikamPool
      vmImage:

pool:
  name: $(poolName)
  vmImage: $(vmImage)

steps:
- checkout: none
- script: echo test

Erstellen mit verschiedenen Python-Versionen

jobs:
- job: Build
  strategy:
    matrix:
      Python35:
        PYTHON_VERSION: '3.5'
      Python36:
        PYTHON_VERSION: '3.6'
      Python37:
        PYTHON_VERSION: '3.7'
    maxParallel: 2

Diese Matrix erstellt drei Aufträge: „Build Python35“, „Build Python36“ und „Build Python37“. In jedem Auftrag ist eine Variable mit dem Namen PYTHON_VERSION verfügbar. In „Build Python35“ ist die Variable auf „3.5“ festgelegt. Sie ist in „Build Python36“ entsprechend auf „3.6“ festgelegt. Nur zwei Aufträge werden gleichzeitig ausgeführt.

Strategie: parallel

Die Strategie für parallele Aufträge gibt an, wie viele Duplikate eines Auftrags ausgeführt werden sollen.

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

Eigenschaften

parallel Schnur.
Führen Sie den Auftrag so oft aus.

Hinweise

Die Strategie für parallele Aufträge ist nützlich, um eine große Testmatrix aufzuteilen. Die Visual Studio Test-Aufgabe versteht, wie die Testlast auf die Anzahl geplanter Aufträge aufgeteilt wird.

Beispiele

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4