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.

Pipeline overview

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:

Az ügynök oldalán minden feladathoz az ügynök a következőt fogja vé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.

Bontsuk fel egyenként az egyes műveletet.

Folyamat feldolgozása

Expand YAML templates

Ha egy folyamatot futtatássá szeretne alakítani, az Azure Pipelines több lépésben is végighalad a következő sorrendben:

  1. Először bontsa ki a sablonokat , é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 minden egyes szakasz 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 a 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 a feladat futtatható-e.
  6. Ü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.

Pool selection

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).

Run each task

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.

Logs and results flow from agent to service

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ával git 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ával git 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ával git 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ával git 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ával git 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ával git 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ával git 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ával git 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ával git 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ával git 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