Delen via


definitie jobs.job.strategy

Uitvoeringsstrategie voor deze taak.

Definities die naar deze definitie verwijzen: pipeline, jobs.job

Implementaties

Implementatie Beschrijving
strategie: matrix, maxParallel Matrixtaakstrategie.
strategie: parallel Strategie voor parallelle taken.

strategie: matrix, maxParallel

Het gebruik van een matrix genereert kopieën van een taak, elk met verschillende invoer. Deze kopieën zijn handig voor het testen op basis van verschillende configuraties of platformversies.

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

Eigenschappen

matrix { string1: { string2: string3 }.
Matrix die de taakstrategie definieert; zie de volgende voorbeelden.

maxParallel Tekenreeks.
Maximum aantal taken dat parallel wordt uitgevoerd.

Opmerkingen

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

Voor elk exemplaar van tekenreeks1 in de matrix wordt een kopie van de taak gegenereerd. De naam tekenreeks1 is de naam van de kopie en wordt toegevoegd aan de naam van de taak. Voor elk exemplaar van tekenreeks2 is een variabele met de naam string2 met de waarde tekenreeks3 beschikbaar voor de taak.

Notitie

Matrixconfiguratienamen mogen alleen eenvoudige Latijnse alfabetletters (A-Z en a-z), cijfers (0-9) en onderstrepingstekens (_) bevatten. Ze moeten beginnen met een letter. De lengte moet ook 100 tekens of minder zijn.

Het optionele maxParallel trefwoord geeft het maximum aantal gelijktijdige matrixpoten aan dat in één keer moet worden uitgevoerd.

Als maxParallel niet is opgegeven of is ingesteld op 0, wordt er geen limiet toegepast.

Als maxParallel niet is opgegeven, wordt er geen limiet toegepast.

Notitie

De matrix syntaxis biedt geen ondersteuning voor automatisch schalen van taken, maar u kunt vergelijkbare functionaliteit implementeren met behulp van het each trefwoord. Zie expressies voor een voorbeeld.

Voorbeelden

Bouwen op meerdere platforms

In dit voorbeeld wordt een matrix taakstrategie gebruikt om op meerdere platforms te bouwen.

# 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

Deze pijplijn maakt gebruik van een script dat wordt uitgevoerd in de integrale script-interpreter van elk platform: Bash op macOS en Linux, CMD in Windows. Zie scripts voor meerdere platformen voor meer informatie.

Bouwen op meerdere platforms met zelf-hostende en door Microsoft gehoste agents

Het volgende voorbeeld bouwt voort op zowel een zelf-hostende agent als een door Microsoft gehoste agent, door zowel een vmImage als een Pool variabele op te geven, zoals in het volgende voorbeeld. Geef Azure Pipelines als de poolnaam op en laat voor zelf-hostende agents de waarde vmImage leeg. De lege waarde vmImage voor de zelf-hostende agent kan leiden tot een aantal ongebruikelijke vermeldingen in de logboeken, maar deze hebben geen invloed op de pijplijn.

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

    selfhosted:
      poolName: FabrikamPool
      vmImage:

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

steps:
- checkout: none
- script: echo test

Bouwen met verschillende Python-versies

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

Deze matrix maakt drie taken: 'Build Python35', 'Build Python36' en 'Build Python37'. Binnen elke taak is een variabele met de naam PYTHON_VERSION beschikbaar. In 'Build Python35' is de variabele ingesteld op '3.5'. Het is ook ingesteld op '3.6' in 'Build Python36'. Er worden slechts twee taken tegelijk uitgevoerd.

strategie: parallel

De strategie voor parallelle taken geeft aan hoeveel duplicaten van een taak moeten worden uitgevoerd.

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

Eigenschappen

parallel Tekenreeks.
Voer de taak zo vaak uit.

Opmerkingen

De strategie voor parallelle taken is handig voor het segmenteren van een grote testmatrix. De Visual Studio Test-taak begrijpt hoe u de testbelasting kunt verdelen over het aantal geplande taken.

Voorbeelden

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4