Sdílet prostřednictvím


definice jobs.job.strategy

Strategie provádění pro tuto úlohu

Definice, které odkazují na tuto definici: kanál, jobs.job

Implementace

Implementace Popis
strategie : matice, maxParallel Strategie maticových úloh.
strategie : paralelní Strategie paralelních úloh

Poznámky

Informace o přístupu k proměnným z úlohy v následující úloze najdete v tématu Nastavení výstupní proměnné s více úlohami.

strategie: matice, maxParallel

Použití matice generuje kopie úlohy, z nichž každá má jiný vstup. Tyto kopie jsou užitečné pro testování v různých konfiguracích nebo verzích platformy.

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

Vlastnosti

matrix { string1: { string2: string3 }.
Matrix definující strategii úlohy; podívejte se na následující příklady.

maxParallel řetězec.
Maximální počet úloh spuštěných paralelně.

Poznámky

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

Pro každý výskyt řetězec1 v matici se vygeneruje kopie úlohy. Název řetězec1 je název kopie a připojí se k názvu úlohy. Pro každý výskyt řetězec2je pro úlohu k dispozici proměnná s názvem string2 s hodnotou řetězec3.

Poznámka:

Názvy konfigurací matice musí obsahovat pouze základní písmena latinky (A-Z a a-z), číslice (0–9) a podtržítka (_). Musí začínat písmenem. Jejich délka musí být také 100 znaků nebo menší.

Volitelné klíčové slovo maxParallel určuje maximální počet souběžných maticových nohou, které se mají spustit najednou.

Pokud maxParallel není zadána nebo je nastavena na hodnotu 0, nepoužije se žádný limit.

Poznámka:

Syntaxe matrix nepodporuje automatické škálování úloh, ale podobné funkce můžete implementovat pomocí klíčového slova each. Příklad najdete v tématu výrazy.

Příklady

Vytváření na více platformách

Tento příklad používá strategii úlohy matrix k sestavení na více platformách.

# 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

Tento kanál používá skript ke spuštění v integrálním interpretu skriptů jednotlivých platforem: Bash v systému macOS a Linux, CMD ve Windows. Další informace najdete v tématu skripty pro více platforem.

Sestavování na několika platformách s využitím agentů hostovaných v místním prostředí a agentů microsoftu

Následující příklad vychází z agenta v místním prostředí i agenta hostovaného Microsoftem zadáním vmImage i proměnné Pool, podobně jako v následujícím příkladu. V případě hostovaného agenta jako název fondu zadejte Azure Pipelines a v případě agentů v místním prostředí ponechte proměnnou vmImage prázdnou. Prázdná vmImage pro agenta v místním prostředí může vést k neobvyklým položkám v protokolech, ale nebudou mít vliv na kanál.

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

    selfhosted:
      poolName: FabrikamPool
      vmImage:

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

steps:
- checkout: none
- script: echo test

Sestavení s využitím různých verzí Pythonu

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

Tato matice vytvoří tři úlohy: Build Python35, Build Python36 a Build Python37. V rámci každé úlohy je k dispozici proměnná s názvem PYTHON_VERSION. V buildu Python35 je proměnná nastavená na 3.5. Podobně je nastavená na 3.6 v buildu Python36. Současně běží jenom dvě úlohy.

strategie: paralelní

Strategie paralelní úlohy určuje, kolik duplicit úlohy se má spustit.

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

Vlastnosti

parallel řetězec.
tuto úlohu spusťte mnohokrát.

Poznámky

Strategie paralelních úloh je užitečná pro vytvoření řezu rozsáhlé testovací matice. Úloha Visual Studio Test rozumí tomu, jak rozdělit zátěž testu mezi počet naplánovaných úloh.

Příklady

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4