definizione stages.stage

Le fasi sono una raccolta di processi correlati. Per impostazione predefinita, le fasi vengono eseguite in sequenza. Ogni fase viene avviata solo dopo il completamento della fase precedente, a meno che non diversamente specificato tramite la dependsOn proprietà .

stages:
- stage: string # Required as first property. ID of the stage.
  displayName: string # Human-readable name for the stage.
  pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
  dependsOn: string | [ string ] # Any stages which must complete before this one.
  condition: string # Evaluate this condition expression to determine whether to run this stage.
  variables: variables | [ variable ] # Stage-specific variables.
  jobs: [ job | deployment | template ] # Jobs which make up the stage.
  lockBehavior: string # Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests.
  templateContext: # Stage related information passed from a pipeline when extending a template.
stages:
- stage: string # Required as first property. ID of the stage.
  displayName: string # Human-readable name for the stage.
  pool: string | pool # Pool where jobs in this stage will run unless otherwise specified.
  dependsOn: string | [ string ] # Any stages which must complete before this one.
  condition: string # Evaluate this condition expression to determine whether to run this stage.
  variables: variables | [ variable ] # Stage-specific variables.
  jobs: [ job | deployment | template ] # Jobs which make up the stage.

Definizioni che fanno riferimento a questa definizione: fasi

Proprietà

stage Stringa. Obbligatorio come prima proprietà.
ID della fase.

displayName Stringa.
Nome leggibile per la fase.

poolpiscina.
Pool in cui verranno eseguiti i processi in questa fase, se non diversamente specificato.

dependsOn string | elenco di stringhe.
Tutte le fasi che devono essere completate prima di questa. Per impostazione predefinita, le fasi vengono eseguite in sequenza nell'ordine definito nella pipeline. Specificare dependsOn: [] per una fase se non deve dipendere dalla fase precedente nella pipeline.

condition Stringa.
Valutare questa espressione di condizione per determinare se eseguire questa fase.

variablesvariabili.
Variabili specifiche della fase.

jobsprocessi.
Processi che costituiscono la fase.

lockBehavior Stringa.
Le richieste di blocco del comportamento da questa fase devono essere esposte in relazione ad altre richieste di blocco esclusive. sequenziale | runLatest.

templateContext templateContext.
Eseguire la fase delle informazioni correlate passate da una pipeline durante l'estensione di un modello. Per altre informazioni su templateContext, vedere Modelli di pipeline YAML estesi possono ora essere passate informazioni di contesto per fasi, processi e distribuzioni emodelli - Usare templateContext per passare le proprietà ai modelli.

Commenti

Usare i controlli di approvazione per controllare manualmente quando deve essere eseguita una fase. Questi controlli vengono usati in genere per controllare le distribuzioni in ambienti di produzione.

I controlli sono un meccanismo disponibile per il proprietario della risorsa. Controllano quando una fase in una pipeline utilizza una risorsa. In qualità di proprietario di una risorsa come un ambiente, è possibile definire i controlli necessari prima di avviare una fase che utilizza la risorsa.

Attualmente, i controlli di approvazione manuali sono supportati in ambienti. Per altre informazioni, vedere Approvazioni.

Blocco esclusivo

Nelle pipeline YAML i controlli vengono usati per controllare l'esecuzione delle fasi sulle risorse protette. Uno dei controlli comuni che è possibile usare è un controllo di blocco esclusivo. Questo controllo consente solo un'esecuzione singola dalla pipeline. Quando più esecuzioni tentano di eseguire la distribuzione in un ambiente contemporaneamente, il controllo annulla tutte le esecuzioni precedenti e consente la distribuzione dell'esecuzione più recente.

È possibile configurare il comportamento del controllo di blocco esclusivo usando la lockBehavior proprietà , che ha due valori:

  • runLatest - Solo l'esecuzione più recente acquisisce il blocco alla risorsa. Questo è il valore predefinito se non è specificato alcun lockBehavior valore.
  • sequential - Tutte le esecuzioni acquisiscono il blocco in sequenza alla risorsa protetta.

L'annullamento delle esecuzioni precedenti è un buon approccio quando le versioni sono cumulative e contengono tutte le modifiche al codice rispetto alle esecuzioni precedenti. Esistono tuttavia alcune pipeline in cui le modifiche al codice non sono cumulative. Configurando la lockBehavior proprietà, è possibile scegliere di consentire a tutte le esecuzioni di procedere e distribuirlo in sequenza in un ambiente oppure mantenere il comportamento precedente di annullare le esecuzioni precedenti e consentire solo la versione più recente. Il valore sequential implica che tutte le esecuzioni acquisiscono il blocco in sequenza alla risorsa protetta. Il valore runLatest implica che solo l'esecuzione più recente acquisisce il blocco alla risorsa.

Per usare il controllo di blocco esclusivo con sequential le distribuzioni o runLatest, seguire questa procedura:

  1. Abilitare il controllo di blocco esclusivo nell'ambiente (o in un'altra risorsa protetta).
  2. Nel file YAML per la pipeline specificare una nuova proprietà denominata lockBehavior. Questa opzione può essere specificata per l'intera pipeline o per una determinata fase:

Impostare su una fase:

stages:
- stage: A
  lockBehavior: sequential
  jobs:
  - job: Job
    steps:
    - script: Hey!

Impostare nella pipeline:

lockBehavior: runLatest
stages:
- stage: A
  jobs:
  - job: Job
    steps:
    - script: Hey!

Esempio

In questo esempio vengono eseguite tre fasi, una dopo l'altra. Nella fase centrale vengono eseguiti due processi in parallelo.

stages:
- stage: Build
  jobs:
  - job: BuildJob
    steps:
    - script: echo Building!
- stage: Test
  jobs:
  - job: TestOnWindows
    steps:
    - script: echo Testing on Windows!
  - job: TestOnLinux
    steps:
    - script: echo Testing on Linux!
- stage: Deploy
  jobs:
  - job: Deploy
    steps:
    - script: echo Deploying the code!

Questo esempio esegue due fasi in parallelo. Per brevità, i processi e i passaggi vengono omessi.

stages:
- stage: BuildWin
  displayName: Build for Windows
- stage: BuildMac
  displayName: Build for Mac
  dependsOn: [] # by specifying an empty array, this stage doesn't depend on the stage before it

Vedi anche

Altre informazioni su fasi, condizioni e variabili.