Freigeben über


definition jobs.job.strategy

Ausführungsstrategie für diesen Auftrag.

Definitionen, die auf diese Definition verweisen: Pipeline-, jobs.job

Ausführungen

Implementierung BESCHREIBUNG
Strategie: Matrix, maxParallel Matrixauftragsstrategie.
Strategie: parallele Parallele Jobstrategie.

Bemerkungen

Informationen zum Zugreifen auf Variablen aus einem Auftrag in einem nachfolgenden Auftrag finden Sie unter Festlegen einer Ausgabevariable mit mehreren Stellen.

Strategie: Matrix, maxParallel

Die Verwendung einer Matrix generiert Kopien eines Auftrags, jeweils mit unterschiedlichen Eingaben. Diese Kopien eignen sich zum Testen mit unterschiedlichen Konfigurationen oder Plattformversionen.

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 Zeichenfolge.
Maximale Anzahl von Aufträgen, die parallel ausgeführt werden.

Bemerkungen

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

Für jedes Vorkommen von Zeichenfolge1 in der Matrix wird eine Kopie des Auftrags generiert. Der Name Zeichenfolge1 ist der Name der Kopie und wird an den Namen des Auftrags angefügt. Für jedes Vorkommen von Zeichenfolge2ist eine Variable mit dem Namen Zeichenfolge2 mit dem Wert Zeichenfolge3 für den Auftrag verfügbar.

Hinweis

Matrixkonfigurationsnamen dürfen nur einfache lateinische Alphabetbuchstaben (A-Z und a-z), Ziffern (0-9) und Unterstriche (_) enthalten. Sie müssen mit einem Brief beginnen. Außerdem muss die Länge maximal 100 Zeichen lang sein.

Das optionale maxParallel Schlüsselwort gibt die maximale Anzahl gleichzeitiger Matrixbeine an, die gleichzeitig ausgeführt werden sollen.

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

Hinweis

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

Beispiele

Erstellen auf mehreren Plattformen

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

# Build NodeJS Express app using Azure Pipelines
# https://learn.microsoft.com/azure/devops/pipelines/ecosystems/javascript
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 Skript- für die Ausführung im integralen Skriptdolmetscher jeder Plattform: Bash unter macOS und Linux, CMD unter Windows. Weitere Informationen finden Sie multiplattformbasierte Skripts.

Erstellen auf mehreren Plattformen mithilfe von selbst gehosteten und von Microsoft gehosteten Agents

Im folgenden Beispiel wird sowohl ein selbst gehosteter Agent als auch ein von Microsoft gehosteter Agent verwendet, 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. Die leere vmImage für den selbst gehosteten Agent kann zu ungewöhnlichen Einträgen in den Protokollen führen, sie wirken 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". Innerhalb jedes Auftrags ist eine Variable mit dem Namen PYTHON_VERSION verfügbar. In "Build Python35" wird die Variable auf "3.5" festgelegt. Es ist ebenfalls auf "3.6" in "Build Python36" festgelegt. Nur zwei Aufträge werden gleichzeitig ausgeführt.

Strategie: parallel

Die Parallelauftragsstrategie gibt an, wie viele Duplikate eines Auftrags ausgeführt werden sollen.

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

Eigenschaften

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

Bemerkungen

Die parallele Auftragsstrategie ist nützlich, um eine große Testmatrix zu slicingen. Die Visual Studio Test-Aufgabe versteht, wie die Testlast über die Anzahl der geplanten Aufträge verteilt wird.

Beispiele

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4