Egy folyamat aktiválása a másik után
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
A nagy termékek több olyan összetevőből állnak, amelyek egymástól függenek. Ezek az összetevők gyakran egymástól függetlenül vannak felépítve. Ha egy felsőbb rétegbeli összetevő (például egy tár) megváltozik, az alsóbb rétegbeli függőségeket újra kell felépíteni és újra kell értékelni.
Ilyen helyzetekben adjon hozzá egy folyamatindítót a folyamat futtatásához az eseményindító folyamat sikeres befejezése után.
Megjegyzés:
Korábban előfordulhat, hogy a YAML-folyamat klasszikus szerkesztőjéhez és a felhasználói felületen konfigurált buildkiegészítési eseményindítókhoz navigált. Bár ez a modell továbbra is működik, már nem ajánlott. Az ajánlott módszer a folyamatindítók közvetlenül a YAML-fájlban való megadása. A klasszikus szerkesztőben definiált buildkiegészítési eseményindítóknak különböző hátrányai vannak, amelyeket a folyamatindítók már kezeltek. Például nem indítható el egy folyamat ugyanazon az ágon, mint az eseményindító folyamaton a buildkiegészítési eseményindítók használatával.
Folyamaterőforrás-eseményindítók konfigurálása
Ha egy folyamatot egy másik folyamat befejezésekor szeretne aktiválni, konfiguráljon egy folyamaterőforrás-eseményindítót.
Az alábbi példa egy folyamaterőforrás-eseményindítót konfigurál, hogy a folyamat futtatása security-lib-ci
után egy elnevezett app-ci
folyamat fusson.
Ebben a példában a következő két folyamat található.
security-lib-ci
– Ez a folyamat fut először.# security-lib-ci YAML pipeline steps: - bash: echo "The security-lib-ci pipeline runs first"
app-ci
– Ez a folyamat rendelkezik egy folyamaterőforrás-eseményindítóval, amely úgy konfigurálja aapp-ci
folyamatot, hogy a folyamat minden futtatásakorsecurity-lib-ci
automatikusan fusson.# app-ci YAML pipeline # We are setting up a pipeline resource that references the security-lib-ci # pipeline and setting up a pipeline completion trigger so that our app-ci # pipeline runs when a run of the security-lib-ci pipeline completes resources: pipelines: - pipeline: securitylib # Name of the pipeline resource. source: security-lib-ci # The name of the pipeline referenced by this pipeline resource. project: FabrikamProject # Required only if the source pipeline is in another project trigger: true # Run app-ci pipeline when any run of security-lib-ci completes steps: - bash: echo "app-ci runs after security-lib-ci completes"
- pipeline: securitylib
a folyamaterőforrás nevét adja meg. Használja az itt definiált címkét, amikor a folyamat más részeiből származó folyamaterőforrásra hivatkozik, például folyamaterőforrás-változók használatakor vagy összetevők letöltésekor.source: security-lib-ci
a folyamaterőforrás által hivatkozott folyamat nevét adja meg. A folyamat nevét több helyen is lekérheti az Azure DevOps portálról, például a Pipelines kezdőlapjáról. Alapértelmezés szerint a folyamatok neve a folyamatot tartalmazó adattárról lesz elnevezve. A folyamat nevének frissítéséhez tekintse meg a folyamatbeállításokat. Ha a folyamat egy mappában található, adja meg a mappa nevét, beleértve például\security pipelines\security-lib-ci
a kezdőt\
is.project: FabrikamProject
- Ha az eseményindító folyamat egy másik Azure DevOps-projektben található, meg kell adnia a projekt nevét. Ez a tulajdonság nem kötelező, ha a forrásfolyamat és az aktivált folyamat is ugyanabban a projektben található. Ha megadja ezt az értéket, és a folyamat nem aktiválódik, tekintse meg a szakasz végén található megjegyzést.trigger: true
– Ez a szintaxis a forrásfolyamat bármely verziójának befejeződésekor aktiválja a folyamatot. A cikk következő szakaszaiból megtudhatja, hogyan szűrheti, hogy a forrásfolyamat-befejezés mely verziói indítják el a futtatást. Ha szűrők vannak megadva, a forrásfolyamat futtatásának meg kell egyeznie az összes szűrővel a futtatás elindításához.
Ha az eseményindító folyamat és az aktivált folyamat ugyanazt az adattárat használja, mindkét folyamat ugyanazzal a véglegesítéssel fog futni, amikor az egyik aktiválja a másikat. Ez akkor hasznos, ha az első folyamat létrehozza a kódot, és a második folyamat teszteli. Ha azonban a két folyamat különböző adattárakat használ, az aktivált folyamat a beállítás által Default branch for manual and scheduled builds
megadott ágban a kód verzióját fogja használni, a folyamatkizárási eseményindítók elágaztatási szempontjaiban leírtak szerint.
Megjegyzés:
Bizonyos esetekben a manuális és ütemezett buildek alapértelmezett ága nem tartalmaz előtagot refs/heads
. Előfordulhat például, hogy az alapértelmezett ág ahelyett, hogy main
a következőre refs/heads/main
lenne beállítva. Ebben a forgatókönyvben egy másik projekt eseményindítója nem működik. Ha a célfolyamattól eltérő értékre állít be project
problémákat, módosíthatja az alapértelmezett ágat úgy, hogy refs/heads
az értéket egy másik ágra módosítja, majd visszaváltja a használni kívánt alapértelmezett ágra.
A YAML-sablonok nem támogatják a folyamatkiegészítési eseményindítók konfigurálását. Továbbra is definiálhat folyamaterőforrásokat a sablonokban.
Ágszűrők
Megadhatja azokat az ágakat, amelyek az eseményindító konfigurálásakor belefoglalhatók vagy kizárhatók. Ha ágszűrőket ad meg, egy új folyamat aktiválódik, amikor egy forrásfolyamat futtatása sikeresen befejeződött, amely megfelel az ágszűrőknek. Az alábbi példában a app-ci
folyamat akkor fut, ha a security-lib-ci
folyamat bármely releases/*
ágon befejeződik, kivéve a releases/old*
.
# app-ci YAML pipeline
resources:
pipelines:
- pipeline: securitylib
source: security-lib-ci
trigger:
branches:
include:
- releases/*
exclude:
- releases/old*
Ha a gyermekfolyamatot különböző ágakhoz szeretné aktiválni, amelyeknél a szülő aktiválódik, adja meg az összes olyan ágszűrőt, amelyhez a szülő aktiválódik. Az alábbi példában a app-ci
folyamat akkor fut, ha a security-lib-ci
folyamat bármely releases/*
ágon vagy főágon befejeződik, kivéve a következőt releases/old*
: .
# app-ci YAML pipeline
resources:
pipelines:
- pipeline: securitylib
source: security-lib-ci
trigger:
branches:
include:
- releases/*
- main
exclude:
- releases/old*
Megjegyzés:
Ha az ágszűrők nem működnek, próbálja meg használni az előtagot refs/heads/
. Például használja ahelyett, hogy refs/heads/releases/old*
releases/old*
.
Címkeszűrők
Megjegyzés:
A folyamaterőforrások címkeszűrő-támogatásához az Azure DevOps Server 2020 1. vagy újabb frissítése szükséges.
Azon tags
szűrők tulajdonsága trigger
, amelyek a folyamat befejezésének eseményei aktiválhatják a folyamatot. Ha az eseményindító folyamat megfelel a tags
lista összes címkéjének, a folyamat fut.
resources:
pipelines:
- pipeline: MyCIAlias
source: Farbrikam-CI
trigger:
tags: # This filter is used for triggering the pipeline run
- Production # Tags are AND'ed
- Signed
Megjegyzés:
A folyamaterőforrásnak is van tulajdonsága tags
. A tags
folyamaterőforrás tulajdonsága határozza meg, hogy melyik folyamat fut az összetevők lekéréséhez, amikor a folyamat manuálisan vagy ütemezett eseményindítóval aktiválódik. További információ: Erőforrások: folyamatok és az összetevő verziójának kiértékelése.
Szakaszszűrők
Megjegyzés:
A folyamaterőforrás-eseményindítók fázisszűrőihez az Azure DevOps Server 2020 1. vagy újabb frissítése szükséges.
A folyamatot akkor aktiválhatja, ha az eseményindító folyamat egy vagy több szakasza befejeződött a stages
szűrő használatával. Ha több fázist ad meg, az aktivált folyamat akkor fut, amikor az összes felsorolt fázis befejeződik.
resources:
pipelines:
- pipeline: MyCIAlias
source: Farbrikam-CI
trigger:
stages: # This stage filter is used when evaluating conditions for
- PreProduction # triggering your pipeline. On successful completion of all the stages
- Production # provided, your pipeline will be triggered.
Elágazási szempontok
A folyamatkiegészítési eseményindítók az Alapértelmezett ágat használják a manuális és ütemezett buildek beállításához annak meghatározásához, hogy a YAML-folyamat ágszűrői melyik ágának verzióját kell kiértékelni annak meghatározásakor, hogy egy folyamatot egy másik folyamat befejezése eredményeként kell-e futtatni. Ez a beállítás alapértelmezés szerint az adattár alapértelmezett ágára mutat.
Amikor egy folyamat befejeződik, az Azure DevOps-futtatókörnyezet kiértékeli a folyamaterőforrás-eseményindító ágszűrőit minden olyan folyamat esetében, amely folyamatkiegészítési eseményindítókkal rendelkezik, amelyek a befejezett folyamatra hivatkoznak. A folyamatok több verzióval is rendelkezhetnek a különböző ágakban, így a futtatókörnyezet kiértékeli a folyamat verziójának ágszűrőit a Default branch for manual and scheduled builds
beállítás által megadott ágban. Ha van egyezés, a folyamat fut, de a futtatott folyamat verziója eltérő ágban lehet attól függően, hogy az aktivált folyamat ugyanabban az adattárban van-e, mint a befejezett folyamat.
- Ha a két folyamat különböző adattárakban található, a rendszer futtatja az általuk megadott
Default branch for manual and scheduled builds
ág aktivált folyamatverziót. - Ha a két folyamat ugyanabban az adattárban található, az aktiváló folyamat által aktivált folyamat verziója az eseményindító folyamattal azonos ágban fut (a folyamat azon verziójának használatával, amely az eseményindító feltétel teljesülésekor az adott ágból származik), még akkor is, ha ez az ág eltér a
Default branch for manual and scheduled builds
többitől, és még akkor is, ha az adott verzió nem rendelkezik a befejezett folyamat ágának megfelelő ágszűrőkkel. Ennek az az oka, hogy az ág ágszűrőiDefault branch for manual and scheduled builds
határozzák meg, hogy a folyamat fut-e, és nem a befejezett folyamatágban lévő verzióban lévő ágszűrők.
Ha úgy tűnik, hogy a folyamat befejezési eseményindítói nem aktiválódnak, ellenőrizze az Alapértelmezett ág értékét az aktivált folyamat manuális és ütemezett buildelési beállításához. Az ágszűrők az adott ág folyamatverziójában annak meghatározására szolgálnak, hogy a folyamat befejezési eseményindítója elindítja-e a folyamat futtatását. Alapértelmezés szerint Default branch for manual and scheduled builds
az adattár alapértelmezett ágára van beállítva, de a folyamat létrehozása után módosíthatja.
A folyamatkiegészítési eseményindító általában nem aktiválódik egy új ág létrehozásakor, a folyamatkizárási eseményindító ágszűrői úgy módosulnak, hogy belefoglalják ezt az új ágat, de ha az első folyamat az új ágszűrőknek megfelelő ágon fejeződik be, a második folyamat nem aktiválódik. Ez akkor fordul elő, ha az ág folyamatverziójának Default branch for manual and scheduled builds
ágszűrői nem egyeznek az új ágával. Az eseményindítóval kapcsolatos probléma megoldásához az alábbi két lehetőség közül választhat.
- Frissítse az ág folyamatában
Default branch for manual and scheduled builds
lévő ágszűrőket úgy, hogy azok megfeleljenek az új ágnak. - Módosítsa a manuális és ütemezett buildek alapértelmezett ágát egy olyan ágra, amely rendelkezik a folyamat egy verziójával az új ágnak megfelelő ágszűrőkkel.
Eseményindító-típusok kombinálása
Amikor ci-eseményindítókat és folyamat-eseményindítókat is megad a folyamatban, számíthat arra, hogy az új futtatások minden alkalommal elindulnak, amikor leküldés történik, amely megfelel a CI-eseményindító szűrőinek, és a forrásfolyamat futtatása befejeződik, amely megfelel a folyamatkiegészítési eseményindító szűrőinek.
Vegyük például két elnevezett A
és B
ugyanabban az adattárban található folyamatot, mindkettő ci-eseményindítóval rendelkezik, és B
a folyamat A
befejezéséhez konfigurálva van egy folyamatkizárási eseményindító. Ha leküldést hajt ki az adattárba:
- A ci-eseményindító alapján egy új futtatás
A
indul el. - Ugyanakkor a CI-eseményindító alapján egy új futtatás
B
is elindul. Ez a futtatás egy korábbi folyamatfuttatásA
összetevőit használja fel. - Ha
A
befejeződött, a folyamat befejezési eseményindítójaB
alapján egy újabb futtatás aktiválódik a következőbenB
: .
A példában szereplő két futtatás aktiválásának B
megakadályozásához le kell tiltania a CI-eseményindítót (trigger: none
) vagy a folyamat eseményindítóját (pr: none
).
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: