Definizione di jobs.job.strategy
Strategia di esecuzione per questo processo.
Implementazioni
Implementazione | Descrizione |
---|---|
strategia: matrice, maxParallel | Strategia del processo matrice. |
strategia: parallela | Strategia parallela per i processi. |
strategia: matrice, maxParallel
L'uso di una matrice genera copie di un processo, ognuna con input diverso. Queste copie sono utili per il test su configurazioni o versioni della piattaforma diverse.
strategy:
matrix: # Matrix defining the job strategy; see the following examples.
{ string1: { string2: string3 }
maxParallel: string # Maximum number of jobs running in parallel.
Proprietà
matrix
{ string1: { string2: string3 }.
Matrice che definisce la strategia del processo; vedere gli esempi seguenti.
maxParallel
Stringa.
Numero massimo di processi in esecuzione in parallelo.
Commenti
strategy:
matrix: { string1: { string2: string3 } }
maxParallel: number
Per ogni occorrenza di string1 nella matrice, viene generata una copia del processo. La stringa del nome1 è il nome della copia e viene aggiunta al nome del processo. Per ogni occorrenza di string2, per il processo è disponibile una variabile denominata string2 con il valore string3 .
Nota
I nomi di configurazione della matrice devono contenere solo lettere alfabetici latine di base (A-Z e a-z), cifre (0-9) e caratteri di sottolineatura (_
).
Devono iniziare con una lettera.
Inoltre, la lunghezza deve essere di 100 caratteri o meno.
La parola chiave facoltativa maxParallel
specifica il numero massimo di gambe della matrice simultanee da eseguire contemporaneamente.
Se maxParallel
non è specificato o impostato su 0, non viene applicato alcun limite.
Se maxParallel
non è specificato, non viene applicato alcun limite.
Nota
La matrix
sintassi non supporta il ridimensionamento automatico dei processi, ma è possibile implementare funzionalità simili usando la each
parola chiave . Per un esempio, vedere espressioni.
Esempio
Creare su più piattaforme
In questo esempio viene usata una matrix
strategia di processo per la compilazione su più piattaforme.
# 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
Questa pipeline usa lo script per l'esecuzione nell'interprete di script integrale di ogni piattaforma: Bash in macOS e Linux, CMD in Windows. Per altre informazioni, vedere Script multipiattaforma .
Creare su più piattaforme usando agenti self-hosted e ospitati da Microsoft
L'esempio seguente si basa sia su un agente self-hosted che su un agente ospitato da Microsoft, specificando sia un oggetto vmImage
che una Pool
variabile, come nell'esempio seguente. Per l'agente ospitato, specificare Azure Pipelines
come nome del pool e per gli agenti self-hosted, lasciare vmImage
vuoto. Il valore vuoto vmImage
per l'agente self-hosted può causare alcune voci insolite nei log, che non influiranno però sulla pipeline.
strategy:
matrix:
microsofthosted:
poolName: Azure Pipelines
vmImage: ubuntu-latest
selfhosted:
poolName: FabrikamPool
vmImage:
pool:
name: $(poolName)
vmImage: $(vmImage)
steps:
- checkout: none
- script: echo test
Compilare usando versioni di Python diverse
jobs:
- job: Build
strategy:
matrix:
Python35:
PYTHON_VERSION: '3.5'
Python36:
PYTHON_VERSION: '3.6'
Python37:
PYTHON_VERSION: '3.7'
maxParallel: 2
Questa matrice crea tre processi: "Build Python35", "Build Python36" e "Build Python37". All'interno di ogni processo è disponibile una variabile denominata PYTHON_VERSION. In "Build Python35" la variabile è impostata su "3.5". È analogamente impostato su "3.6" in "Build Python36". Vengono eseguiti contemporaneamente solo due processi.
strategia: parallela
La strategia del processo parallelo specifica il numero di duplicati di un processo da eseguire.
strategy:
parallel: string # Run the job this many times.
Proprietà
parallel
Stringa.
Eseguire il processo molte volte.
Commenti
La strategia di processo parallelo è utile per il sezionamento di una matrice di test di grandi dimensioni. L'attività Test di Visual Studio illustra come dividere il carico di test tra il numero di processi pianificati.
Esempi
jobs:
- job: SliceItFourWays
strategy:
parallel: 4