Delen via


jobs.job.strategy definition

Uitvoeringsstrategie voor deze taak.

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

Implementaties

Implementatie Beschrijving
strategie: matrix, maxParallel Matrixtaakstrategie.
strategie: parallelle Parallelle taakstrategie.

Opmerkingen

Zie Een uitvoervariabele met meerdere taken instellenvoor toegang tot variabelen vanuit een taak in een volgende taak.

strategie: matrix, maxParallel

Met behulp van een matrix worden kopieën van een taak gegenereerd, 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 { tekenreeks1: { tekenreeks2: 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 tekenreeks2is een variabele met de naam tekenreeks2 met de waarde tekenreeks3 beschikbaar voor de taak.

Notitie

Matrixconfiguratienamen mogen alleen latijnse letters (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 matrixbenen aan dat tegelijk moet worden uitgevoerd.

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

Notitie

De syntaxis van matrix biedt geen ondersteuning voor automatisch schalen van taken, maar u kunt vergelijkbare functionaliteit implementeren met behulp van het each trefwoord. Zie expressiesvoor 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
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 script om te worden uitgevoerd in de integrale script-interpreter van elk platform: Bash op macOS en Linux, CMD in Windows. Zie scripts voor meerdere platforms voor meer informatie.

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

Het volgende voorbeeld is gebaseerd 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 vmImage voor de zelf-hostende agent kan leiden tot enkele 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

Met deze matrix worden drie taken gemaakt: 'Build Python35', 'Build Python36' en 'Build Python37'. Binnen elke taak is een variabele met de naam PYTHON_VERSION beschikbaar. In 'Build Python35' wordt 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.
de taak dit vaak uitvoeren.

Opmerkingen

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

Voorbeelden

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4