definitie jobs.job.strategy
Uitvoeringsstrategie voor deze taak.
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