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 di : parallela Strategia di processo parallela.

Osservazioni:

Per accedere alle variabili da un processo in un processo successivo, vedere Impostare una variabile di output multi-processo.

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.

Osservazioni:

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

Per ogni occorrenza di stringa1 nella matrice, viene generata una copia del processo. Il nome stringa1 è il nome della copia e viene aggiunto al nome del processo. Per ogni occorrenza di string2, è 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 loro 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.

Nota

La sintassi matrix non supporta il ridimensionamento automatico dei processi, ma è possibile implementare funzionalità simili usando la parola chiave each. Per un esempio, vedere espressioni .

Esempi

Creare su più piattaforme

In questo esempio viene usata una strategia di processo matrix per la compilazione su più piattaforme.

# 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

Questa pipeline usa script per l'esecuzione in ogni interprete di script integrale della piattaforma: Bash in macOS e Linux, CMD in Windows. Per altre informazioni, vedere script multipiattaforma.

Creare su più piattaforme usando agenti ospitati da Microsoft e self-hosted

L'esempio seguente si basa sia su un agente self-hosted che su un agente ospitato da Microsoft, specificando sia un vmImage che una variabile Pool, 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 vmImage vuoto per l'agente self-hosted può comportare alcune voci insolite nei log, ma non influiscono 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 con diverse versioni di Python

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". Solo due processi vengono eseguiti contemporaneamente.

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.

Osservazioni:

La strategia del processo parallelo è utile per suddividere una matrice di test di grandi dimensioni. L'attività di test di Visual Studio comprende come dividere il carico di test tra il numero di processi pianificati.

Esempi

jobs:
- job: SliceItFourWays
  strategy:
    parallel: 4