Dela via


stages.stage definition

Faser är en samling relaterade jobb. Som standard körs faserna sekventiellt. Varje fas startar först efter att föregående steg har slutförts om inget annat anges via egenskapen dependsOn.

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: sequential | runLatest # Behavior lock requests from this stage should exhibit in relation to other exclusive lock requests.
  trigger: manual | automatic # Stage trigger manual or automatic (default).
  isSkippable: boolean # Setting false prevents the stage from being skipped. By default it's always true.
  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.
  lockBehavior: sequential | runLatest # 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.

Definitioner som refererar till den här definitionen: steg

Egenskaper

stage sträng. Krävs som första egenskap.
ID för fasen.

displayName sträng.
läsbart namn för scenen.

pool pool.
pool där jobb i det här steget körs om inget annat anges.

dependsOn sträng | stränglista.
Alla steg som måste slutföras före den här. Som standard körs faserna sekventiellt i den ordning som definieras i pipelinen. Ange dependsOn: [] för en fas om den inte ska vara beroende av föregående steg i pipelinen.

condition sträng.
Utvärdera det här villkorsuttrycket för att avgöra om den här fasen ska köras.

variables variabler.
stegspecifika variabler.

jobs jobb.
Jobb som utgör fasen.

lockBehavior sträng.
Beteendelåsbegäranden från den här fasen bör visas i förhållande till andra exklusiva låsbegäranden. sekventiell | runLatest.

trigger sträng.
Stegutlösare manuell eller automatisk (standard). manual | automatisk.

isSkippable boolesk.
Inställningen false förhindrar att fasen hoppas över. Som standard är det alltid sant.

templateContext templateContext.
Stegrelaterad information som skickas från en pipeline när du utökar en mall. Mer information om templateContextfinns i utökade YAML Pipelines-mallar kan nu skickas kontextinformation för steg, jobb och distributioner och mallar – Använd templateContext för att skicka egenskaper till mallar.

Anmärkningar

Mer information om templateContextfinns i utökade YAML Pipelines-mallar kan nu skickas kontextinformation för steg, jobb och distributioner och mallar – Använd templateContext för att skicka egenskaper till mallar.

Använd godkännandekontroller för att manuellt styra när en fas ska köras. Dessa kontroller används ofta för att styra distributioner till produktionsmiljöer.

Kontroller är en mekanism som är tillgänglig för resursägare. De styr när en fas i en pipeline förbrukar en resurs. Som ägare till en resurs som en miljö kan du definiera kontroller som krävs innan en fas som använder resursen kan starta.

För närvarande stöds manuella godkännandekontroller i miljöer. Mer information finns i Godkännanden.

Exklusivt lås

I YAML-pipelines används kontroller för att styra körningen av steg på skyddade resurser. En av de vanliga kontrollerna som du kan använda är en exklusiv låskontroll. Med den här kontrollen kan endast en enda körning från pipelinen fortsätta. När flera körningar försöker distribuera till en miljö samtidigt avbryter kontrollen alla gamla körningar och tillåter att den senaste körningen distribueras.

Du kan konfigurera beteendet för den exklusiva låskontrollen med egenskapen lockBehavior, som har två värden:

  • runLatest – Endast den senaste körningen hämtar låset till resursen. Det här är standardvärdet om ingen lockBehavior har angetts.
  • sequential – Alla körningar hämtar låset sekventiellt till den skyddade resursen.

Att avbryta gamla körningar är en bra metod när dina versioner är kumulativa och innehåller alla kodändringar från tidigare körningar. Det finns dock vissa pipelines där kodändringar inte är kumulativa. Genom att konfigurera egenskapen lockBehavior kan du välja att tillåta att alla körningar fortsätter och distribueras sekventiellt till en miljö, eller bevarar det tidigare beteendet att avbryta gamla körningar och bara tillåta den senaste. Värdet sequential innebär att alla körningar hämtar låset sekventiellt till den skyddade resursen. Värdet runLatest innebär att endast den senaste körningen hämtar låset till resursen.

Följ dessa steg om du vill använda exklusiv låskontroll med sequential distributioner eller runLatest:

  1. Aktivera den exklusiva låskontrollen i miljön (eller en annan skyddad resurs).
  2. I YAML-filen för pipelinen anger du en ny egenskap med namnet lockBehavior. Detta kan anges för hela pipelinen eller för en viss fas:

Ställ in på en scen:

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

Ställ in på pipelinen:

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

Exklusivt lås på fasnivå

Vissa användningsfall kräver en pipeline för att få åtkomst till en specifik resurs endast en gång vid en viss tidpunkt. För att stödja det här fallet har vi den exklusiva låskontrollen som beskrivs i föregående avsnitt..

En liknande situation uppstår när endast en pipelinekörning ska komma åt ett stadium när som helst. Om du till exempel har en fas som distribueras till en Azure-resursgrupp kanske du vill förhindra att flera pipelinekörningar uppdaterar samma resursgrupp samtidigt. För närvarande krävs det att du använder en proxyresurs, till exempel en miljö, och att den exklusiva låskontrollen placeras i den miljön. Den här metoden kan vara tidskrävande, öka komplexiteten och öka underhållsinsatserna.

Om du behöver se till att endast en enda pipelinekörning i taget kan komma åt en fas kan du ange det exklusiva låset på fasnivå. Om du har en fas med ett ID och anger dess egenskap lockBehavior skapas automatiskt ett lås för den fasen. Sekventiellt beteende förblir konsekvent för lås på både resursnivå och nivånivå. Det runLatest beteendet skiljer sig dock åt, eftersom det bara avbryter runLatest versioner för samma gren, inte för alla grenar i pipelinen.

Exempel

Det här exemplet kör tre steg, en efter en. Mellansteget kör två jobb parallellt.

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!

Det här exemplet kör två faser parallellt. För korthet utelämnas jobben och stegen.

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

Se även

Läs mer om steg, villkoroch variabler.