Szakaszok, függőségek és feltételek hozzáadása

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

A szakasz egy logikai határ egy Azure DevOps-folyamatban. A fázisok a szoftverfejlesztési folyamat műveleteinek csoportosítására használhatók (például az alkalmazás buildelésére, tesztek futtatására, üzembe helyezésre az előgyártásban). Minden szakasz egy vagy több feladatot tartalmaz.

Ha egy folyamat több szakaszát definiálja, alapértelmezés szerint egymás után futnak. A szakaszok egymástól is függhetnek. A kulcsszóval dependsOn függőségeket határozhat meg. A szakaszok az előző fázis eredményei alapján is futtathatók feltételekkel.

A párhuzamos feladatok és licencelés szakaszainak működéséről a Párhuzamos feladatok konfigurálása és fizetése című témakörben olvashat.

Ha szeretné megtudni, hogy a szakaszok hogyan kapcsolódnak a folyamat más részeihez, például a feladatokhoz, tekintse meg a főbb folyamatokra vonatkozó fogalmakat.

A YAML-sémaszakaszok cikkéből megtudhatja azt is, hogyan kapcsolódnak a szakaszok a folyamat egyes részeihez.

A folyamatfeladatokat fázisokba szervezheti. A fázisok a folyamatok fő osztásai: az alkalmazás létrehozása, a tesztek futtatása és az előkészítésre való üzembe helyezés jó példák a szakaszokra. Ezek logikai határok a folyamatban, ahol szüneteltetheti a folyamatot, és különböző ellenőrzéseket hajthat végre.

Minden folyamatnak van legalább egy fázisa, még akkor is, ha nem definiálja explicit módon. A fázisokat függőségi gráfba is rendezheti, így az egyik fázis a másik előtt fut. Egy szakaszra 256 feladat van korlátozva.

Feljegyzés

A szakaszok támogatása az Azure DevOps Server 2019.1-ben lett hozzáadva.

Szakaszok megadása

Feljegyzés

A szakaszok támogatása az Azure DevOps Server 2019.1-ben lett hozzáadva.

A legegyszerűbb esetben nincs szükség logikai határokra a folyamatban. Ebben az esetben nem kell explicit módon használnia a kulcsszót stage . Közvetlenül megadhatja a feladatokat a YAML-fájlban.

# this has one implicit stage and one implicit job
pool:
  vmImage: 'ubuntu-latest'
steps:
- bash: echo "Hello world"
# this pipeline has one implicit stage
jobs:
- job: A
  steps:
  - bash: echo "A"

- job: B
  steps:
  - bash: echo "B"

Ha több fázisba rendezi a folyamatot, a kulcsszót stages használja.

stages:
- stage: A
  jobs:
  - job: A1
  - job: A2

- stage: B
  jobs:
  - job: B1
  - job: B2

Ha a szakasz szintjén ad meg egy pool értéket, akkor az adott szakaszban definiált összes feladat ezt a készletet használja, kivéve, ha a feladat szintjén van megadva.

Feljegyzés

Az Azure DevOps Server 2019-ben a készletek csak feladatszinten adhatók meg.

stages:
- stage: A
  pool: StageAPool
  jobs:
  - job: A1 # will run on "StageAPool" pool based on the pool defined on the stage
  - job: A2 # will run on "JobPool" pool
    pool: JobPool

A szakasz megadásának teljes szintaxisa a következő:

stages:
- stage: string  # name of the stage, A-Z, a-z, 0-9, and underscore
  displayName: string  # friendly name to display in the UI
  dependsOn: string | [ string ]
  condition: string
  pool: string | pool
  variables: { string: string } | [ variable | variableReference ] 
  jobs: [ job | templateReference]

Függőségek megadása

Feljegyzés

A szakaszok támogatása az Azure DevOps Server 2019.1-ben lett hozzáadva.

Ha egy folyamat több fázisát definiálja, alapértelmezés szerint egymás után futnak abban a sorrendben, amelyben a YAML-fájlban definiálja őket. Ez alól kivételt képeznek a függőségek hozzáadásakor. Függőségek esetén a szakaszok a követelmények sorrendjében futnak dependsOn .

A folyamatoknak legalább egy fázist tartalmazniuk kell függőségek nélkül.

Több szakasz és függőségük meghatározásának szintaxisa a következő:

stages:
- stage: string
  dependsOn: string
  condition: string

Egymást követő példaszakaszok:

# if you do not use a dependsOn keyword, stages run in the order they are defined
stages:
- stage: QA
  jobs:
  - job:
    ...

- stage: Prod
  jobs:
  - job:
    ...

Párhuzamosan futó példaszakaszok:

stages:
- stage: FunctionalTest
  jobs:
  - job:
    ...

- stage: AcceptanceTest
  dependsOn: []    # this removes the implicit dependency on previous stage and causes this to run in parallel
  jobs:
  - job:
    ...

Példa a ki- és befúvatásra:

stages:
- stage: Test

- stage: DeployUS1
  dependsOn: Test    # this stage runs after Test

- stage: DeployUS2
  dependsOn: Test    # this stage runs in parallel with DeployUS1, after Test

- stage: DeployEurope
  dependsOn:         # this stage runs after DeployUS1 and DeployUS2
  - DeployUS1
  - DeployUS2

Feltételek meghatározása

Megadhatja azokat a feltételeket, amelyek mellett az egyes szakaszok kifejezésekkel futnak. Alapértelmezés szerint egy szakasz akkor fut, ha nem függ semmilyen más fázistól, vagy ha az összes fázis, amelytől függ, befejeződött és sikeres volt. Ezt a viselkedést úgy szabhatja testre, hogy egy szakaszt arra kényszerít, hogy futtasson még akkor is, ha egy előző szakasz meghibásodik, vagy egyéni feltételt ad meg.

Ha testre szabja az előző lépések alapértelmezett feltételét egy szakaszhoz, akkor eltávolítja a befejezés és a sikeresség feltételeit. Ha tehát egyéni feltételt használ, gyakran használatos and(succeeded(),custom_condition) annak ellenőrzésére, hogy az előző szakasz sikeresen lefutott-e. Ellenkező esetben a szakasz az előző szakasz eredményétől függetlenül fut.

Feljegyzés

A sikertelen ('JOBNAME/STAGENAME') és a sikeres ('JOBNAME/STAGENAME') feltételek a következő példában látható módon csak YAML-folyamatok esetében működnek.

Feljegyzés

A szakaszok támogatása az Azure DevOps Server 2019.1-ben lett hozzáadva.

Példa egy szakasz futtatására az előző szakasz futtatásának állapota alapján:

stages:
- stage: A

# stage B runs if A fails
- stage: B
  condition: failed()

# stage C runs if B succeeds
- stage: C
  dependsOn:
  - A
  - B
  condition: succeeded('B')

Példa egyéni feltétel használatára:

stages:
- stage: A

- stage: B
  condition: and(succeeded(), eq(variables['build.sourceBranch'], 'refs/heads/main'))

Sorbanállási szabályzatok megadása

A YAML-folyamatok nem támogatják a sorba állítási szabályzatokat. A folyamat minden egyes futtatása független a többi futtatástól, és nem tud a többi futtatásról. Más szóval a két egymást követő véglegesítés két folyamatot indíthat el, és mindkettő ugyanazt a fázissorozatot hajtja végre anélkül, hogy egymásra vár. Bár a YAML-folyamatokra sorba állítási szabályzatokat hozunk létre, javasoljuk, hogy manuális jóváhagyásokkal manuálisan rendezze és vezérelje a végrehajtás sorrendjét, ha ez fontos.

Jóváhagyások megadása

Manuálisan szabályozhatja, hogy mikor fusson egy szakasz jóváhagyási ellenőrzésekkel. Ezt gyakran használják az éles környezetekben történő üzembe helyezés szabályozására. Az ellenőrzések egy olyan mechanizmus, amely az erőforrás tulajdonosának rendelkezésére áll annak szabályozására, hogy a folyamat egy szakasza mikor és mikor használhat fel erőforrást. Egy erőforrás, például egy környezet tulajdonosaként megadhatja azokat az ellenőrzéseket, amelyeket teljesítenie kell ahhoz, hogy megkezdődjön az erőforrás egy szakaszának felhasználása.

Jelenleg a manuális jóváhagyási ellenőrzések támogatottak a környezetekben. További információ: Jóváhagyások.

Jóváhagyások az Azure DevOps Server ezen verziójában a YAML-folyamatok még nem támogatják.