jobs.job.strategy definition

Strategia wykonywania dla tego zadania.

Definicje odwołujące się do tej definicji: pipeline, jobs.job

Implementacje

Implementacja Opis
strategia: macierz, maxParallel Strategia zadania macierzy.
strategia: równoległa Strategia równoległego zadania.

strategia: macierz, maxParallel

Użycie macierzy generuje kopie zadania z różnymi danymi wejściowymi. Te kopie są przydatne do testowania pod kątem różnych konfiguracji lub wersji platformy.

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

Właściwości

matrix { string1: { string2: string3 }.
Macierz definiująca strategię zadania; zapoznaj się z poniższymi przykładami.

maxParallel Ciąg.
Maksymalna liczba zadań uruchomionych równolegle.

Uwagi

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

Dla każdego wystąpienia ciągu1 w macierzy jest generowana kopia zadania. Ciąg nazwy1 jest nazwą kopii i jest dołączany do nazwy zadania. Dla każdego wystąpienia ciągu2 zmienna o nazwie string2 z ciągiem wartości3 jest dostępna dla zadania.

Uwaga

Nazwy konfiguracji macierzy muszą zawierać tylko podstawowe litery alfabetu łacińskiego (A-Z i a-z), cyfry (0–9) i podkreślenia (_). Muszą zaczynać się od litery. Ponadto ich długość musi wynosić 100 znaków lub mniej.

Opcjonalne maxParallel słowo kluczowe określa maksymalną liczbę równoczesnych nóg macierzy do uruchomienia jednocześnie.

Jeśli maxParallel wartość jest nieokreślona lub ustawiona na 0, nie zastosowano żadnego limitu.

Jeśli maxParallel nie określono żadnego limitu, nie zostanie zastosowany żaden limit.

Uwaga

Składnia matrix nie obsługuje automatycznego skalowania zadań, ale można zaimplementować podobne funkcje przy użyciu słowa kluczowego each . Aby zapoznać się z przykładem, zobacz wyrażenia.

Przykłady

Tworzenie na wielu platformach

W tym przykładzie użyto matrix strategii zadania do budowy na wielu platformach.

# 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

Ten potok używa skryptu do uruchamiania w interpreterze skryptów całkowitych każdej platformy: Bash w systemach macOS i Linux, CMD w systemie Windows. Zobacz skrypty wieloplatformowe , aby dowiedzieć się więcej.

Tworzenie na wielu platformach przy użyciu własnych i hostowanych przez firmę Microsoft agentów

Poniższy przykład opiera się zarówno na własnym agencie, jak i na agencie hostowanym przez firmę Microsoft, określając zarówno zmienną, vmImage jak i zmienną Pool , jak w poniższym przykładzie. W przypadku hostowanego agenta określ wartość Azure Pipelines jako nazwę puli, a dla własnych agentów pozostaw pustą wartość vmImage. Pusta wartość vmImage dla własnego agenta może spowodować nietypowe wpisy w dziennikach, ale nie będą one miały wpływu na potok.

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

    selfhosted:
      poolName: FabrikamPool
      vmImage:

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

steps:
- checkout: none
- script: echo test

Kompilowanie przy użyciu różnych wersji języka Python

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

Ta macierz tworzy trzy zadania: "Build Python35", "Build Python36" (Kompilowanie języka Python36) i "Build Python37". W każdym zadaniu dostępna jest zmienna o nazwie PYTHON_VERSION. W obszarze "Build Python35" zmienna jest ustawiona na "3.5". Jest ona również ustawiona na "3.6" w sekcji "Build Python36" (Kompilowanie języka Python36). Jednocześnie są uruchamiane tylko dwa zadania.

strategia: równoległa

Strategia równoległego zadania określa liczbę duplikatów zadania, które należy uruchomić.

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

Właściwości

parallel Ciąg.
Uruchom to zadanie wiele razy.

Uwagi

Strategia zadań równoległych jest przydatna do fragmentowania dużej macierzy testowej. Zadanie testowe programu Visual Studio rozumie, jak podzielić obciążenie testowe na liczbę zaplanowanych zadań.

Przykłady

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4