Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
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 folyamatindításisikeres befejezése után.
Jegyzet
Korábban lehet, hogy a YAML-folyamat klasszikus szerkesztőjéhez navigált, és a felhasználói felületen beállította a build befejezési eseményindítókat. 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 megadása közvetlenül a YAML-fájlban. A klasszikus szerkesztőben definiált buildbefejezési indítóknak különböző hátrányai vannak, de ezeket a hiányosságokat a folyamatindítók már orvosolták. Például nem lehet elindítani egy folyamatot ugyanazon a szálon, amelyen az eseményindító folyamat fut, a build befejezési eseményindítók használatával.
A folyamatbeállítások felhasználói felületén definiált triggerek elsőbbséget élveznek a YAML-eseményindítókkal szemben. Ha törölni szeretné a felhasználói felület ütemezett indítóit egy YAML csővezetékből, tekintse meg: A felhasználói felület beállításai felülírják a YAML ütemezett indítókat.
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ást eseményindítót.
Az alábbi példa egy folyamaterőforrás-eseményindítót konfigurál, hogy egy app-ci nevű folyamat futjon a security-lib-ci-folyamat bármely futtatása után.
Ebben a példában a következő két folyamat található.
security-lib-ci– Ez a pipeline fut először.# security-lib-ci YAML pipeline steps: - bash: echo "The security-lib-ci pipeline runs first"app-ci– Ez a folyamat egy folyamaterőforrás-eseményindítóval rendelkezik, amely úgy konfigurálja aapp-cifolyamatot, hogy minden alkalommal automatikusan fusson, amikor asecurity-lib-cifolyamat fut.# 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: securityliba 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-cia pipeline-hoz tartozó erőforrás által hivatkozott pipeline 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át. 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 folyamatbeállításokat. Ha a folyamat egy mappában található, adja meg a mappa nevét, beleértve a kezdő\-át, például\security pipelines\security-lib-ci-et. -
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– Ezzel a szintaxisval aktiválhatja a folyamatot a forrásfolyamat bármely verziójának befejeződésekor. 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 csővezeték különböző adattárakat használ, az aktivált csővezeték a Default branch for manual and scheduled builds beállítás által meghatározott ág kódjának verzióját fogja használni, ahogy azt a folyamatlezárási eseményindítók Ág szempontjaileírják.
Jegyzet
Bizonyos esetekben a manuális és ütemezett buildek alapértelmezett ága nem tartalmaz refs/heads előtagot. Előfordulhat például, hogy az alapértelmezett ág main értékre van állítva ahelyett, hogy refs/heads/main. Ebben a forgatókönyvben nem működik egy másik projekt eseményindítója. Ha problémákba ütközik, amikor a project-t a célirányelvtől eltérő értékre állítja, frissítheti az alapértelmezett ágat úgy, hogy az tartalmazza a refs/heads-et. Ezt úgy teheti meg, hogy az értékét egy másik ágra módosítja, majd visszaállítja 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 befejeződik bármely releases/* ágon, kivéve 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 befejeződik bármely releases/* ágon vagy főágon, kivéve a releases/old*.
# app-ci YAML pipeline
resources:
pipelines:
- pipeline: securitylib
source: security-lib-ci
trigger:
branches:
include:
- releases/*
- main
exclude:
- releases/old*
Jegyzet
Ha az ágszűrők nem működnek, próbálkozzon a refs/heads/előtaggal. Használjon például refs/heads/releases/old*releases/old*helyett.
Címkeszűrők
Jegyzet
A folyamaterőforrások címkeszűrő-támogatásaAzure DevOps Server 2020 1. frissítésének vagy újabb verziójára van szükség.
A tags tulajdonsága a trigger szűri, hogy mely csővezeték-befejezési események indíthatják a csővezetéket. Ha az eseményindító folyamat megfelel a tags listában szereplő összes címké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
Jegyzet
A folyamaterőforrásnak tags tulajdonsága is van. A folyamaterőforrás tags 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ókért lásd: Erőforrások: csővezetékek és Az összetevő verziójának kiértékelése.
Állapot szűrők
Jegyzet
folyamaterőforrás-eseményindítók fázisszűrőinekAzure DevOps Server 2020 Update 1 vagy újabb verziójára van szükség.
Alapértelmezés szerint a célfolyamat csak a forrásfolyamat befejezésekor aktiválódik. Ha a forráscsővezeték szakaszokkal rendelkezik, szakaszszűrőkkel aktiválhatja a csővezeték futását, amikor a forráscsővezeték egy vagy több szakasza teljesül (a teljes csővezeték helyett) azáltal, hogy egy stages szűrőt konfigurál egy vagy több szakaszhoz. 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 folyamat befejezési eseményindítók az Alapértelmezett ágat manuális és ütemezett buildekhez beállítást használják annak eldöntésére, hogy a YAML-folyamat ágszűrői közül melyik ág verzióját kell értékelni annak megállapításához, hogy egy folyamat egy másik folyamat befejezése következtében fusson-e. 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ó, az
Default branch for manual and scheduled buildsáltal megadott ág aktivált folyamatverziója fut. - Ha a két folyamat ugyanabban az adattárban található, a rendszer az eseményindító folyamattal megegyező ágban futtatja az aktivált folyamat verzióját (a folyamatnak az adott ágból származó verzióját használja az eseményindító feltétel teljesülésének időpontjában), még akkor is, ha ez az ág eltér a
Default branch for manual and scheduled builds, és még akkor is, ha az adott verzió nem rendelkezik olyan ágszűrőkkel, amelyek megfelelnek a befejezett folyamat ágának. Ennek az az oka, hogy aDefault branch for manual and scheduled buildság ágszűrői 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 folyamatvégzítési eseményindítók nem aktiválódnak, ellenőrizze a Alapértelmezett ág értékét az aktivált folyamat manuális és ütemezett buildjeinek 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 a Default branch for manual and scheduled builds az adattár alapértelmezett ágára van beállítva, de a munkafolyamat létrehozása után módosíthatja.
A folyamatbefejezési eseményindító általában nem aktiválódik, amikor új ágat hoznak létre, és a folyamatbefejezési eseményindító ágszűrőit úgy módosítják, hogy tartalmazzák ezt az új ágat. Az első folyamat az új ágszűrőknek megfelelő ágon történő befejezésekor a második folyamat mégsem aktiválódik. Ez akkor fordul elő, ha a Default branch for manual and scheduled builds ág folyamatverziójának ágszűrői nem egyeznek meg 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 a folyamat ágszűrőit a
Default branch for manual and scheduled buildságban, hogy azok megfeleljenek az új ágnak. - Frissítse a alapértelmezett ágat a manuális és ütemezett buildekhez, beállítást olyan ágra, amely rendelkezik a folyamat egy olyan verziójával, amely az új ágnak megfelelő ágszűrőkkel rendelkezik.
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 egy leküldés történik, amely megfelel a CI-eseményindító szűrőinek, és a forrásfolyamat futása befejeződik, amely megfelel a folyamat-befejezési eseményindító szűrőinek.
Vegyük például a A és B nevű két folyamatot, amelyek ugyanabban az adattárban találhatók, és mindkettőnél CI-eseményindítók vannak beállítva, míg a B-nél egy pipeline befejezési eseményindítót konfigurálták úgy, hogy a Afolyamat befejezését kövesse. Ha feltöltést végez az adattárba:
- A CI-indító alapján újraindul a
Afuttatása. - Ezzel egyidejűleg elindul a
Búj futtatása a CI-eseményindító alapján. Ez a futtatás a folyamatA-számú korábbi futtatásának eredményeit használja fel. - Amikor
Abefejeződik, ez egy újabbBfuttatását indítja el aBcsővezeték befejeződési eseményindító alapján.
Ha meg szeretné akadályozni, hogy két B futjon ebben a példában, le kell tiltania a CI-eseményindítót (trigger: none) vagy a folyamatindítót (pr: none).