Udostępnij za pośrednictwem


jobs.job.strategy definition

Strategia wykonywania dla tego zadania.

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

Implementacje

Implementacja Opis
strategia : macierz, maxParallel Strategia zadania macierzy.
strategia : równoległe Strategia zadań równoległych.

Uwagi

Aby uzyskać dostęp do zmiennych z zadania w kolejnym zadaniu, zobacz Set a multi-job output variable.

strategia: macierz, maxParallel

Użycie macierzy generuje kopie zadania, z których każda ma inne dane wejściowe. 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ągu 1 w macierzy jest generowana kopia zadania. Nazwa ciągu 1 jest nazwą kopii i jest dołączana do nazwy zadania. Dla każdego wystąpienia ciągu 2zmienna o nazwie string2 z wartością string3 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 być 100 znaków lub mniejsza.

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

Jeśli maxParallel nie jest określona lub ustawiona na 0, 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 expressions.

Przykłady

Tworzenie na wielu platformach

W tym przykładzie użyto strategii zadań matrix do tworzenia na wielu platformach.

# 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

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. Aby dowiedzieć się więcej, zobacz skrypty wieloplatformowe.

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

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 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. Puste vmImage dla własnego agenta mogą spowodować nietypowe wpisy w dziennikach, ale nie będą 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: "Kompilowanie języka Python35", "Kompilowanie języka Python36" i "Kompilowanie języka Python37". W każdym zadaniu dostępna jest zmienna o nazwie PYTHON_VERSION. W obszarze "Build Python35" zmienna jest ustawiona na "3.5". Podobnie jest ustawiona na wartość "3.6" w obszarze "Build Python36" (Kompilacja języka Python36). Jednocześnie są uruchamiane tylko dwa zadania.

strategia: równoległa

Strategia zadań równoległych 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.
wielokrotnie uruchamiać zadanie.

Uwagi

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

Przykłady

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4