Folyamatfuttatási szekvencia

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

A futtatások egy folyamat egyetlen végrehajtását jelentik. 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 is futtat.

Folyamat áttekintése

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. Magas szinten az Azure Pipelines a következőket teszi:

Az ügynökoldalon minden feladathoz az ügynök a következőket fogja elvégezni:

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.

Vizsgáljuk meg egyenként az egyes lépéseket.

Folyamat feldolgozása

YAML-sablonok kibontása

Ha egy folyamatot futtatássá szeretne alakítani, az Azure Pipelines az alábbi sorrendben halad végig a következő lépéseken:

  1. Először bontsa ki a sablonok csomópontot , és értékelje ki a sablonkifejezéseket.
  2. 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.
  3. A futtatásra kijelölt egyes fázisok esetében két dolog történik:
  4. A futtatásra kijelölt feladatok esetében bontsa ki a több konfigurációt (strategy: matrix vagy strategy: parallel YAML-ben) több futtatókörnyezeti feladatra.
  5. Minden futtatókörnyezeti feladat esetében értékelje ki a feltételeket annak eldöntéséhez, hogy az adott feladat futtatható-e.
  6. Ügynök kérése minden jogosult futtatókörnyezeti feladathoz.

A futtatókörnyezeti feladatok befejezésekor az Azure Pipelines ellenőrzi, hogy vannak-e futtatható új feladatok. Ha igen, a 4–6. lépés ismétlődik az új feladatokkal. Hasonlóképpen, ahogy a szakaszok befejeződnek, a 2–6. lépés minden új szakasz esetében megismétlődik.

Ez a rendezés segít megválaszolni egy gyakori kérdést: miért nem használhatok bizonyos változókat a sablonparaméterekben? Az 1. lépés, a sablonbővítés, kizárólag a YAML-dokumentum szövegén működik. Ebben a lépésben nem léteznek futtatókörnyezeti változók. Az 1. lépés után a sablonparaméterek fel lettek oldva, és már nem léteznek.

Egy másik gyakori problémára is választ ad: miért nem tudok változókat használni a szolgáltatáskapcsolat/környezetnevek feloldásához? Az erőforrások a fázisok futásának megkezdése előtt vannak engedélyezve, így a fázis- és feladatszintű változók nem érhetők el. A folyamatszintű változók használhatók, de csak azok a változók, amelyek kifejezetten szerepelnek a folyamatban. A változócsoportok maguk is olyan erőforrások, amelyeket engedélyezni szükséges, í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észletre vonatkozó kérések

Először 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 tárolóhelyek, a feladatnak várnia kell egy tárolóhelyen, 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 óriási, 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ósrendszer-típus szerint.) vmImage A kért (YAML-ben) vagy készletnév (a klasszikus szerkesztőben) alapján egy ügynök van kiválasztva.

Készlet kiválasztása

A Microsoft-készlet összes ügynöke friss, új virtuális gép, amely még nem futtatott folyamatokat. A feladat befejezése után 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 tárolóhelyek, a feladatnak várnia kell egy tárolóhelyen, hogy felszabaduljon.

Ha már elérhető egy párhuzamos pont, a saját üzemeltetésű készlet megvizsgál egy kompatibilis ügynököt. A saját üzemeltetésű ügynökök olyan képességeket kínálnak, amelyek sztringek, amelyek azt jelzik, hogy egy adott szoftver telepítve van, vagy a beállítások konfigurálva vannak. A folyamatnak vannak igényei, amelyek a feladat futtatásához szükséges képességek. Ha nem található olyan ingyenes ügynök, amelynek képességei megfelelnek a folyamat igényeinek, 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. A saját üzemeltetésű ügynökök esetében a folyamatfeladatoknak lehetnek olyan mellékhatásai, mint a gyorsítótárak bemelegítése vagy a legtöbb véglegesítés már elérhető a helyi adattárban.

Felkészülés 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 gyorsítótárazza a következő alkalommal) 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, egymás után futnak. Mielőtt egy lépés elkezdődhet, az összes előző lépést be kell fejezni (vagy át kell hagyni).

Minden feladat futtatása

A lépéseket tevékenységek hajtják végre. Maguk a feladatok Node.js vagy PowerShell-szkriptekként vannak implementálva. 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, elkülönítve azt a környezettől, amelyet az előző lépésekben hagyott. 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 kommunikál az ügynökkel: naplózási parancsokkal. Amikor egy feladat vagy szkript egy naplózási parancsot ír a standard kiírásához, 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á lesznek konvertálva. Ha új változót myVar szeretne beállítani a értékével myValue, egy szkript a következőt teheti:

echo '##vso[task.setVariable variable=myVar]myValue'
Write-Host "##vso[task.setVariable variable=myVar]myValue"

Jelentések és eredmények gyű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ára, és a feladatot "hibákkal sikeresnek" jelöli. A hibákat a rendszer az összefoglaló oldalon is jelenti, de a feladatot "sikertelenként" jelöli meg. A lépés akkor hiba, ha explicit módon hibát jelez (parancs használatával ##vso ), vagy a szkriptet nem nulla kilépési kóddal zárja le.

Naplók és eredmények adatfolyama ügynökről szolgáltatásra

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. A problémák vagy a sikertelen lépések sikerességével 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 megállapításához, hogy fut-e. Alapértelmezés szerint egy lépés csak akkor fut, ha a feladat állapota sikeres vagy problémákat tapasztal. Számos feladat rendelkezik olyan törlési lépésekkel, amelyeket a többi eseménytől függetlenül futtatni kell, így megadhatják az "always()" feltételt. 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őpontban, a kiszolgáló megszakítja a feladatot. Megkísérli jelezni az ügynöknek, hogy állítsa le, és megszakítottként jelöli meg a feladatot. Az ügynökoldalon ez azt jelenti, hogy az összes hátralévő lépést megszakítja, és feltölti a fennmaradó eredményeket.

A feladatoknak egy megszakítási időtúllépés néven ismert türelmi időszakuk van, amelyben a lemondási munkákat el kell végezni. (Ne feledje, hogy a lépések megjelölhetők úgy, hogy megszakítás esetén is fussanak.) Ha az időtúllépés és a megszakítás időtúllépése 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 eltűnik (á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, amely tájékoztatja a kiszolgálót, hogy még működik. Ha a kiszolgáló öt egymást követő percen át nem kap szívverést, feltételezi, hogy az ügynök nem tér vissza. A feladat hibaként van megjelölve, és tudatja a felhasználóval, hogy újra meg kell próbálkoznia a folyamatsal.

Futtatások kezelése a parancssori felületen keresztül

Az Azure DevOps CLI 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 használatának első lépései című cikkben leírtak szerint.
  • Jelentkezzen be az Azure DevOpsba a használatával az login.
  • A cikkben szereplő példákhoz állítsa be az alapértelmezett szervezetet a használatával az devops configure --defaults organization=YourOrganizationURL.

Folyamatfuttatások listázása

Listázhatja a projektben futó folyamatokat az az pipelines runs list paranccsal. Első lépésekért lásd: Ismerkedés 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

  • ág: Szűrés ehhez az ághoz tartozó buildek alapján.
  • org: Azure DevOps-szervezet URL-címe. Az alapértelmezett szervezetet a paranccsal az devops configure -d organization=ORG_URLkonfigurálhatja. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával git configvette fel. Példa: --org https://dev.azure.com/MyOrganizationName/.
  • pipeline-ids: A buildeket listázni kívánt definíciók szóközzel elválasztott azonosítói.
  • projekt: A projekt neve vagy azonosítója. Az alapértelmezett projektet a paranccsal az devops configure -d project=NAME_OR_IDkonfigurálhatja. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával git configvette fel.
  • query-order: Határozza meg, hogy a folyamatfuttatások milyen sorrendben legyenek felsorolva. Az elfogadott értékek a következők: FinishTimeAsc, FinishTimeDesc, QueueTimeAsc, QueueTimeDesc, StartTimeAsc és StartTimeDesc.
  • reason: Csak a megadott okból listázni kell a buildeket. Az elfogadott értékek a következők: batchedCI, buildCompletion, checkInShelveset, individualCI, manual, pullRequest, schedule, trigger, userCreated és validateShelveset.
  • requested-for: Korlátozza a megadott felhasználó vagy csoport számára kért buildeket.
  • result: A megadott eredménnyel rendelkező buildekre korlátozható. Az elfogadott értékek megszakítva, sikertelenek, nincsek, részbenSucceeded éssikeresek.
  • status: Korlátozza a megadott állapotú buildeket. Az elfogadott értékek a következők: mind, megszakítás, befejezett, inProgress, none, notStarted és elhalasztva.
  • címkék: Korlátozza a buildeket az egyes megadott címkékkel. Szóköz 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áblaformá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ért lásd: Ismerkedés az Azure DevOps CLI-vel.

az pipelines runs show --id
                       [--open]
                       [--org]
                       [--project]

Paraméterek

  • id: Kötelező megadni. A folyamatfuttatás azonosítója.
  • megnyitás: Nem kötelező. Megnyitja a builderedmények lapját a webböngészőben.
  • org: Azure DevOps-szervezet URL-címe. Az alapértelmezett szervezetet a paranccsal az devops configure -d organization=ORG_URLkonfigurálhatja. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával git configvette fel. Példa: --org https://dev.azure.com/MyOrganizationName/.
  • projekt: A projekt neve vagy azonosítója. Az alapértelmezett projektet a paranccsal az devops configure -d project=NAME_OR_IDkonfigurálhatja. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával git configvette fel.

Példa

Az alábbi parancs a 123 azonosítójú folyamatfuttatás részleteit mutatja be, és táblaformátumban adja vissza az eredményeket. Megnyitja a webböngészőt a builderedmények oldalára is.

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á a projekt egyik folyamatfuttatásához az az pipelines run tag add paranccsal. Első lépésekért lásd: Ismerkedés 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 paranccsal az devops configure -d organization=ORG_URLkonfigurálhatja. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával git configvette fel. Példa: --org https://dev.azure.com/MyOrganizationName/.
  • projekt: A projekt neve vagy azonosítója. Az alapértelmezett projektet a paranccsal az devops configure -d project=NAME_OR_IDkonfigurálhatja. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával git configvette fel.

Példa

A következő parancs hozzáadja a YAML címkét a 123-as azonosítójú folyamatfuttatáshoz, és az eredményt JSON formátumban adja vissza.

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 run tag list paranccsal. Első lépésekért lásd: Ismerkedés 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 paranccsal az devops configure -d organization=ORG_URLkonfigurálhatja. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával git configvette fel. Példa: --org https://dev.azure.com/MyOrganizationName/.
  • project: A projekt neve vagy azonosítója. Az alapértelmezett projektet konfigurálhatja a paranccsal az devops configure -d project=NAME_OR_ID. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával veszi fel a elemet git config.

Példa

Az alábbi parancs felsorolja a folyamatfuttatás címkéit a 123-at 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 projektben futtatott folyamatból az az pipelines run tag delete paranccsal. Az első lépésekért lásd: Ismerkedés 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 paranccsal az devops configure -d organization=ORG_URLkonfigurálhatja. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával veszi fel a elemet git config. Példa: --org https://dev.azure.com/MyOrganizationName/.
  • project: A projekt neve vagy azonosítója. Az alapértelmezett projektet konfigurálhatja a paranccsal az devops configure -d project=NAME_OR_ID. Kötelező, ha nincs alapértelmezettként konfigurálva, vagy a használatával veszi fel a elemet git config.

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