Folyamatfuttatási sorozat
Azure DevOps Services | Azure DevOps Server 2020-| Azure DevOps Server 2019
A futtatások egy folyamat egy végrehajtását jelölik. A futtatás során a folyamat feldolgozásra kerül, az ügynökök pedig egy vagy több feladatot dolgoznak fel. A folyamatfuttatás feladatokból, lépésekből és tevékenységekből áll. Folyamatos integrációs (CI) és folyamatos kézbesítési (CD) folyamatokat egyaránt futtat.
Folyamat futtatásakor sok minden történik a háttérben. Bár gyakran nem kell tudni róluk, néha hasznos, ha a nagy képet. Az Azure Pipelines magas szinten:
- Folyamat feldolgozása
- Egy vagy több ügynök kérése feladatok futtatásához
- Feladatok átadása ügynököknek és az eredmények összegyűjtése
Az ügynök oldalán minden feladathoz az ügynök a következőt fogja végezni:
- Felkészülés a feladatra
- A feladat minden lépésének futtatása
- Eredmények jelentése az Azure Pipelinesnak
A feladatok sikeresek, sikertelenek vagy megszakíthatók. Előfordulhatnak olyan helyzetek is, amikor egy feladat nem fejeződik be. Ennek megértése segíthet a problémák elhárításában.
Bontsuk fel egyenként az egyes műveletet.
Folyamat feldolgozása
Ha egy folyamatot futtatássá szeretne alakítani, az Azure Pipelines több lépésben is végighalad a következő sorrendben:
- Először bontsa ki a sablonokat , és értékelje ki a sablonkifejezéseket.
- Ezután értékelje ki a függőségeket a fázis szintjén a futtatandó első fázis(ok) kiválasztásához.
- A futtatásra kijelölt minden egyes szakasz esetében két dolog történik:
- A rendszer összegyűjti és ellenőrzi az összes feladatban használt összes erőforrást a futtatáshoz szükséges engedélyezéshez .
- A feladatok szintjén értékelje ki a függőségeket az első futtatandó feladat(ok) kiválasztásához.
- A futtatásra kijelölt feladatok esetében bontsa ki a több konfigurációt (
strategy: matrixvagystrategy: parallela YAML-ben) több futtatókörnyezeti feladatra. - Minden futtatókörnyezeti feladat esetében értékelje ki a feltételeket annak eldöntéséhez, hogy a feladat futtatható-e.
- Ügynök kérése minden jogosult futtatókörnyezeti feladathoz.
A futtatókörnyezeti feladatok befejeződése után az Azure Pipelines látni fogja, hogy vannak-e futtatható új feladatok. Ha igen, ismételje meg a 4–6. lépést az új feladatokkal. Hasonlóképpen, ahogy a szakaszok befejeződnek, a 2–6. lépés minden új szakasz esetében meg fog ismétlődni.
Ez a rendezés segít megválaszolni egy gyakori kérdést: miért nem tudok bizonyos változókat használni a sablon paramétereiben? Az 1. lépés, a sablonbővítés kizárólag a YAML-dokumentum szövegén működik. A futásidejű változók ebben a lépésben nem léteznek. Az 1. lépés után a sablonparaméterek feloldva lettek, és már nem léteznek.
Egy másik gyakori problémára is választ ad: miért nem tudok változókkal feloldani a szolgáltatáskapcsolatok/környezetek nevét? Az erőforrások a fázisok futásának megkezdése előtt engedélyezve vannak, így a fázis- és feladatszintű változók nem érhetők el. A folyamatszintű változók használhatók, de csak azok, amelyek kifejezetten szerepelnek a folyamatban. A változócsoportok maguk is engedélyhez kötött erőforrások, így adataik szintén nem érhetők el az erőforrás-engedélyezés ellenőrzésekor.
Ügynök kérése
Amikor az Azure Pipelinesnak futtatnia kell egy feladatot, egy ügynököt fog kérni a készlettől. (A kiszolgálói feladatok kivételt képeznek, mivel magukon az Azure Pipelines-kiszolgálón futnak.) A Microsoft által üzemeltetett és a saját üzemeltetésű ügynökkészletek némileg eltérően működnek.
A Microsoft által üzemeltetett ügynökkészlet-kérelmek
Először is a szolgáltatás ellenőrzi a szervezet párhuzamos feladatait. Összeadja az összes futó feladatot az összes Microsoft által üzemeltetett ügynökön, és összehasonlítja azt a megvásárolt párhuzamos feladatok számával. Ha nincsenek elérhető párhuzamos pontok, a feladatnak várnia kell egy ponton, hogy felszabaduljon.
Ha elérhető egy párhuzamos pont, a feladat a kért ügynöktípusra lesz irányítva.
Elméletileg a Microsoft által üzemeltetett készlet egy hatalmas, globális gépkészlet.
(A valóságban sok különböző fizikai készlet van felosztva földrajzi hely és operációs rendszer típusa szerint.) vmImage A kért (YAML-ben) vagy készletnév (a klasszikus szerkesztőben) alapján kiválaszt egy ügynököt.
A Microsoft-készlet minden ügynöke friss, új virtuális gép, amely még nem futtatott folyamatokat. A feladat befejezésekor az ügynök virtuális gépe el lesz vetve.
Saját üzemeltetésű ügynökkészlet-kérelmek
A Microsoft által üzemeltetett készlethez hasonlóan a szolgáltatás először ellenőrzi a szervezet párhuzamos feladatait. Összeadja az összes futó feladatot az összes saját üzemeltetésű ügynökön, és összehasonlítja azt a megvásárolt párhuzamos feladatok számával. Ha nincsenek elérhető párhuzamos pontok, a feladatnak várnia kell egy ponton, hogy felszabaduljon.
Miután elérhető egy párhuzamos pont, a saját üzemeltetésű készletet egy kompatibilis ügynökhöz kell megvizsgálni. A saját üzemeltetésű ügynökök olyan képességeket kínálnak, amelyek sztringek, amelyek azt jelzik, hogy az adott szoftver telepítve van, vagy a beállítások konfigurálva vannak. A folyamat igényekkel rendelkezik, amelyek a feladat futtatásához szükséges képességek. Ha a folyamat igényeinek megfelelő képességekkel rendelkező ingyenes ügynök nem található, a feladat továbbra is várakozni fog. Ha a készletben nincsenek olyan ügynökök, amelyek képességei megfelelnek az igényeknek, a feladat sikertelen lesz.
A saját üzemeltetésű ügynököket általában futtatástól futtatásig használják újra. Ez azt jelenti, hogy egy folyamatfeladatnak lehetnek mellékhatásai: a gyorsítótárak bemelegítése, a legtöbb véglegesítés már elérhető a helyi adattárban stb.
Felkészülés egy feladat futtatására
Miután egy ügynök elfogadta a feladatot, el kell végeznie néhány előkészítési feladatot. Az ügynök letölti (és a következő alkalommal gyorsítótárazza) a feladat futtatásához szükséges összes feladatot . Munkaterületet hoz létre a lemezen a futtatás során használt forráskód, összetevők és kimenetek tárolásához. Ezután megkezdi a lépések futtatását.
Minden lépés futtatása
A lépések egymás után futnak. Mielőtt egy lépés elkezdődhet, az összes előző lépést végre kell hajtani (vagy át kell hagyni).
A lépéseket tevékenységek hajtják végre. Maguk a feladatok Node.js vagy PowerShell-szkriptekként vannak megvalósítva. A feladatrendszer a bemeneteket és kimeneteket a háttérszkriptekhez irányítja. Emellett olyan gyakori szolgáltatásokat is biztosít, mint a rendszerútvonal módosítása és új folyamatváltozók létrehozása.
Minden lépés a saját folyamatában fut, és elkülöníti az előző lépések által hátrahagyott környezettől. Ennek a lépésenkénti folyamatmodellnek köszönhetően a környezeti változók nem maradnak meg a lépések között. A feladatok és szkriptek azonban rendelkeznek egy olyan mechanizmussal, a amely vissza tud kommunikálni az ügynökkel: naplózási parancsokkal. Amikor egy feladat vagy szkript egy naplózási parancsot ír a standard kiíráshoz, az ügynök bármilyen műveletet végrehajt.
Van egy ügynökparancs új folyamatváltozók létrehozásához.
A folyamatváltozók a következő lépésben automatikusan környezeti változókká alakulnak át.
Egy új változó myVar értékének myValuebeállításához a szkript a következőket teheti:
echo '##vso[task.setVariable variable=myVar]myValue'
Write-Host "##vso[task.setVariable variable=myVar]myValue"
Jelentések és eredmények összegyűjtése
Minden lépés jelenthet figyelmeztetéseket, hibákat és hibákat.
A rendszer hibákat és figyelmeztetéseket jelent a folyamat összefoglalási oldalán, és a feladatot "hibákkal sikeresnek" jelöli.
A rendszer a hibákat az összefoglaló oldalon is jelenti, de a feladatot "sikertelennek" jelöli.
A lépés akkor hiba, ha explicit módon jelenti a hibát (parancs használatával ##vso ), vagy nem nulla kilépési kóddal zárja le a szkriptet.
A lépések futtatásakor az ügynök folyamatosan küld kimeneti sorokat a szolgáltatásnak. Ezért látható a konzol élő hírcsatornája. Az egyes lépések végén a lépés teljes kimenete naplófájlként is fel lesz töltve. A naplók a folyamat befejezése után tölthetők le. Az ügynök által feltölthető egyéb elemek összetevőket és teszteredményeket tartalmaznak. Ezek a folyamat befejezése után is elérhetők.
Állapot és feltételek
Az ügynök nyomon követi az egyes lépések sikerességét vagy sikertelenségét. Ahogy a lépések sikeresek a problémák vagy sikertelenek, a feladat állapota frissül. A feladat mindig az egyes lépések "legrosszabb" eredményét tükrözi: ha egy lépés meghiúsul, a feladat is meghiúsul.
Egy lépés futtatása előtt az ügynök ellenőrzi a lépés feltételét annak meghatározásához, hogy fut-e. Alapértelmezés szerint egy lépés csak akkor fut le, ha a feladat állapota sikeres vagy problémákat tapasztal. Számos feladat rendelkezik olyan törlési lépésekkel, amelyeket a többitől függetlenül futtatni kell, hogy meghatározhassák az "always()" feltételt. Előfordulhat, hogy a törlési lépések úgy is beállíthatók, hogy csak lemondáskor fussanak. Egy sikeres tisztítási lépés nem tudja menteni a feladatot a sikertelenségtől; A feladatok soha nem tudnak visszamenni a sikerhez a hiba beírása után.
Időkorlátok és a kapcsolat bontása
Minden feladat időtúllépéssel rendelkezik. Ha a feladat nem fejeződött be a megadott idő alatt, a kiszolgáló megszakítja a feladatot. Megkísérli jelezni, hogy az ügynök leáll, és megszakítottként jelöli meg a feladatot. Az ügynök oldalán ez azt jelenti, hogy az összes hátralévő lépést megszakítja, és feltölti a fennmaradó eredményeket.
A feladatoknak van egy megszakítási időtúllépésnek nevezett türelmi időszakuk, amelyben a megszakítási munkákat el kell végezni. (Ne feledje, hogy a lépések megjelölhetők úgy , hogy még lemondáskor is fussanak.) Ha az időtúllépés és a megszakítási időtúllépés után az ügynök nem jelentette, hogy a munka leállt, a kiszolgáló hibaként jelöli meg a feladatot.
Mivel az Azure Pipelines időről időre osztja el a munkát az ügynökgépek között, előfordulhat, hogy az ügynökök nem válaszolnak a kiszolgálóra. Ez akkor fordulhat elő, ha az ügynök gazdagépe leáll (áramkimaradás, a virtuális gép ki van kapcsolva), vagy ha hálózati hiba történik. A feltételek észlelésének elősegítése érdekében az ügynök percenként egyszer szívverési üzenetet küld, hogy tájékoztassa a kiszolgálót a működésről. Ha a kiszolgáló öt egymást követő percig nem kap szívverést, feltételezi, hogy az ügynök nem fog visszatérni. A feladat sikertelenként van megjelölve, és tudatja a felhasználóval, hogy újra meg kell próbálkoznia a folyamaton.
Futtatások kezelése a parancssori felületen keresztül
Az Azure DevOps PARANCSSORI használatával listázhatja a projekt folyamatfuttatásait, és megtekintheti egy adott futtatás részleteit. A folyamatfuttatásban címkéket is hozzáadhat és törölhet.
Előfeltételek
- Telepítenie kell az Azure DevOps CLI-bővítményt az Azure DevOps CLI-vel Első lépések leírtak szerint.
- Jelentkezzen be az Azure DevOpsba a .
az login - A cikkben szereplő példák esetében állítsa be az alapértelmezett szervezetet a következő használatával
az devops configure --defaults organization=YourOrganizationURL: .
Folyamatfuttatások listázása
Listázhatja a projektben futtatott folyamatokat az az pipelines runs list paranccsal. Első lépések: Első lépések az Azure DevOps CLI-vel.
az pipelines runs list [--branch]
[--org]
[--pipeline-ids]
[--project]
[--query-order {FinishTimeAsc, FinishTimeDesc, QueueTimeAsc, QueueTimeDesc, StartTimeAsc, StartTimeDesc}]
[--reason {all, batchedCI, buildCompletion, checkInShelveset, individualCI, manual, pullRequest, schedule, triggered, userCreated, validateShelveset}]
[--requested-for]
[--result {canceled, failed, none, partiallySucceeded, succeeded}]
[--status {all, cancelling, completed, inProgress, none, notStarted, postponed}]
[--tags]
[--top]
Választható paraméterek
- branch: Szűrés ehhez az ághoz tartozó buildek alapján.
- org: Azure DevOps-szervezet URL-címe. Az alapértelmezett szervezetet a következővel
az devops configure -d organization=ORG_URLkonfigurálhatja: . Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át. Példa:--org https://dev.azure.com/MyOrganizationName/. - folyamatazonosítók: A buildek listázásához használt definíciók szóközzel elválasztott azonosítói.
- projekt: A projekt neve vagy azonosítója. Az alapértelmezett projektet a használatával
az devops configure -d project=NAME_OR_IDkonfigurálhatja. Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át. - query-order: Határozza meg, hogy a folyamatfuttatások milyen sorrendben legyenek felsorolva. Az elfogadott értékek: FinishTimeAsc, FinishTimeDesc, QueueTimeAsc, QueueTimeDesc, StartTimeAsc és StartTimeDesc.
- ok: Csak lista buildek ehhez a megadott okból. Az elfogadott értékek a következők: batchedCI, buildCompletion, checkInShelveset, individualCI, manual, pullRequest, schedule, triggered, userCreated és validateShelveset.
- requested-for: A megadott felhasználóhoz vagy csoporthoz kért buildekre vonatkozó korlát.
- result:Limit to the builds with a specified result. Az elfogadott értékek megszakítva, sikertelenek, egyik sem, részben sikeresek és sikeresek.
- állapot: Korlátozza a megadott állapotú buildeket. Az elfogadott értékek a következők: összes, megszakítás, befejezett, bejövő forgalom, nincs, nincs Indítás és elhalasztva.
- tags: Korlátozza a buildeket az egyes megadott címkékkel. Szóközzel elválasztva.
- top: A listázandó buildek maximális száma.
Példa
A következő parancs felsorolja az első három folyamatfuttatást, amelyek állapota befejeződött és sikeres, és az eredményt tábla formátumban adja vissza.
az pipelines runs list --status completed --result succeeded --top 3 --output table
Run ID Number Status Result Pipeline ID Pipeline Name Source Branch Queued Time Reason
-------- ---------- --------- --------- ------------- -------------------------- --------------- -------------------------- ------
125 20200124.1 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 18:56:10.067588 manual
123 20200123.2 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 11:55:56.633450 manual
122 20200123.1 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 11:48:05.574742 manual
Folyamatfuttatás részleteinek megjelenítése
A projektben futtatott folyamat részleteinek megjelenítése az az pipelines runs show paranccsal. Első lépések: Első lépések az Azure DevOps CLI-vel.
az pipelines runs show --id
[--open]
[--org]
[--project]
Paraméterek
- id: Kötelező. A folyamatfuttatás azonosítója.
- megnyitás: Nem kötelező. Megnyitja a buildelési eredmények lapját a webböngészőben.
- org: Azure DevOps-szervezet URL-címe. Az alapértelmezett szervezetet a következővel
az devops configure -d organization=ORG_URLkonfigurálhatja: . Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át. Példa:--org https://dev.azure.com/MyOrganizationName/. - projekt: A projekt neve vagy azonosítója. Az alapértelmezett projektet a használatával
az devops configure -d project=NAME_OR_IDkonfigurálhatja. Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át.
Példa
Az alábbi parancs a 123-os azonosítójú folyamatfuttatás részleteit mutatja be, és táblaformátumban adja vissza az eredményeket. Megnyitja a webböngészőt is a buildelési eredmények lapjára.
az pipelines runs show --id 122 --open --output table
Run ID Number Status Result Pipeline ID Pipeline Name Source Branch Queued Time Reason
-------- ---------- --------- --------- ------------- -------------------------- --------------- -------------------------- --------
123 20200123.2 completed succeeded 12 Githubname.pipelines-java master 2020-01-23 11:55:56.633450 manual
Címke hozzáadása folyamatfuttatáshoz
Címkét adhat hozzá egy folyamatfuttatáshoz a projektben az az pipelines runs tag add paranccsal. Első lépések: Első lépések az Azure DevOps CLI-vel.
az pipelines runs tag add --run-id
--tags
[--org]
[--project]
Paraméterek
- run-id: Kötelező. A folyamatfuttatás azonosítója.
- tags: Kötelező. A folyamatfuttatáshoz hozzáadandó címkék (vesszővel tagolt értékek).
- org: Azure DevOps-szervezet URL-címe. Az alapértelmezett szervezetet a következővel
az devops configure -d organization=ORG_URLkonfigurálhatja: . Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át. Példa:--org https://dev.azure.com/MyOrganizationName/. - projekt: A projekt neve vagy azonosítója. Az alapértelmezett projektet a használatával
az devops configure -d project=NAME_OR_IDkonfigurálhatja. Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át.
Példa
A következő parancs hozzáadja a YAML címkét a 123-as azonosítójú folyamatfuttatáshoz, és JSON formátumban adja vissza az eredményt.
az pipelines runs tag add --run-id 123 --tags YAML --output json
[
"YAML"
]
Folyamatfuttatási címkék listázása
Listázhatja a projektben futó folyamat címkéit az az pipelines runs tag list paranccsal. Első lépések: Első lépések az Azure DevOps CLI-vel.
az pipelines runs tag list --run-id
[--org]
[--project]
Paraméterek
- run-id: Kötelező. A folyamatfuttatás azonosítója.
- org: Azure DevOps-szervezet URL-címe. Az alapértelmezett szervezetet a következővel
az devops configure -d organization=ORG_URLkonfigurálhatja: . Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át. Példa:--org https://dev.azure.com/MyOrganizationName/. - projekt: A projekt neve vagy azonosítója. Az alapértelmezett projektet a használatával
az devops configure -d project=NAME_OR_IDkonfigurálhatja. Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át.
Példa
A következő parancs felsorolja a folyamatfuttatás címkéit a 123-ban megadott azonosítóval, és az eredményt táblaformátumban adja vissza.
az pipelines runs tag list --run-id 123 --output table
Tags
------
YAML
Címke törlése a folyamatfuttatásból
Töröljön egy címkét a projekt egyik folyamatfuttatásából az az pipelines runs tag delete paranccsal. Első lépések: Első lépések az Azure DevOps CLI-vel.
az pipelines runs tag delete --run-id
--tag
[--org]
[--project]
Paraméterek
- run-id: Kötelező. A folyamatfuttatás azonosítója.
- címke: Kötelező. A folyamatfuttatásból törölni kívánt címke.
- org: Azure DevOps-szervezet URL-címe. Az alapértelmezett szervezetet a következővel
az devops configure -d organization=ORG_URLkonfigurálhatja: . Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át. Példa:--org https://dev.azure.com/MyOrganizationName/. - projekt: A projekt neve vagy azonosítója. Az alapértelmezett projektet a használatával
az devops configure -d project=NAME_OR_IDkonfigurálhatja. Kötelező, ha nem alapértelmezettként van konfigurálva, vagy a rendszer a használatávalgit configveszi át.
Példa
A következő parancs törli a YAML-címkét a 123-as azonosítójú folyamatfuttatásból.
az pipelines runs tag delete --run-id 123 --tag YAML