Condividi tramite


Definizione di jobs.job.strategy

Strategia di esecuzione per questo processo.

Definizioni che fanno riferimento a questa definizione: pipeline,jobs.job

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