Megosztás a következőn keresztül:


Folyamatláncok hibaelhárítása

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Ha a folyamatfuttatás nem fejeződik be, használja a diagnosztikai adatokat és a naplókat a folyamatfuttatás összefoglaló oldalán a probléma elhárításához. Ez az útmutató útmutatást nyújt a folyamatok hibáinak diagnosztizálásához naplókkal, hibaelemzési eszközökkel és gyakori hibaelhárítási technikákkal. Megtudhatja, hogyan azonosíthatja a kiváltó okokat, és hogyan valósíthat meg megoldásokat a folyamatok zökkenőmentes futtatásához.

Képernyőkép a folyamatfuttatás összefoglaló oldaláról diagnosztikai adatokkal.

Naplók megtekintése

Válassza ki a hibaüzenetet a nem befejezett feladat naplóinak megtekintéséhez.

Képernyőkép egy feladat hibaüzenetéről a folyamatfuttatás összegzési oldalán.

A naplók lapon látható a kijelölt hiba. Ebben a példában hiba történt a cmd-line feladatban, ahol a echo parancsot ech-ként adták meg.

Képernyőkép a folyamatfuttatás diagnosztikai naplójáról.

A tevékenység nyers naplójának megtekintéséhez válassza a Nyers napló megtekintése lehetőséget, és a kereséssel kereshet a naplóban.

Képernyőkép az Azure DevOps naplónézeti beállításairól.

A sikertelen tevékenység naplóiban hibainformációkat és a feladat sikertelenségével kapcsolatos nyomokat keres. Alapértelmezés szerint a nemverbózus naplókat egy folyamatfuttatás hozza létre. Ha az alapértelmezett naplók nem jelzik a probléma okát, részletes naplók konfigurálásával további információt kaphat.

Hibaelemzési oldal

A hibaelhárítási segítség a Hibaelemzés lapon érhető el. Vigye az egeret a hibainformációs sor fölé, és válassza a Nézetelemzés ikont.

Képernyőkép a folyamatfuttatás összegzési oldalán található nézetelemzés ikonjáról.

Az Azure DevOps Server nézetelemzési ikonjának képernyőképe.

Válassza a Saját üzemeltetésű ügynökök ügynökének megtekintése (vagy a Microsoft által üzemeltetett ügynökök üzemeltetett ügynökének rendszerképe ) lehetőséget a folyamat futtatásához használt ügynökkel kapcsolatos további információk megtekintéséhez, a napló megtekintése pedig a folyamatfuttatási naplók megtekintéséhez.

Képernyőkép az Azure DevOps Portál hibaelemzési oldaláról.

A feladat adatainak megtekintéséhez válassza ki az alábbi Run-time details lehetőséget.

Képernyőkép a feladat részleteiről a hibaelemzésből.

Ebben a példában láthatja, hogy hiba történt a ValueScriptfájlban. A feladat dokumentációjának megtekintéséhez válassza az A feladatról lehetőséget.

Ha a probléma nem jelenik meg a folyamatfuttatás összefoglaló oldalán vagy a naplók böngészése során, tekintse meg a következő Gyakori problémák szakaszt, és tekintse át a naplók áttekintését a folyamatproblémák diagnosztizálásához , és további diagnosztikai információkat tartalmazó teljes naplók letöltésével kapcsolatos információkat talál.

Gyakori problémák

Feladatelemzések sikertelen folyamatfuttatásokhoz

Az Azure DevOps a Feladatelemzések a sikertelen folyamatfuttatásokhoz beállítást biztosítja, amely ha engedélyezve van, előugró értesítéseket biztosít a buildelési hibákról egy jelentés megtekintésére szolgáló hivatkozással.

Képernyőkép a tevékenységelemzési metrikákról.

A beállítás konfigurálásához keresse meg az előzetes verziójú funkciókat, keresse meg a feladatelemzéseket a sikertelen folyamatfuttatásokhoz, és válassza ki a kívánt beállítást.

Képernyőkép a feladatelemzésről a sikertelen folyamatfuttatási beállításhoz.

Sikertelen futtatások értesítései

Az Azure DevOps beépített értesítéseket tartalmaz a sikertelen folyamatfuttatásokról. Értesítések engedélyezése:

  1. Nyissa meg a Projektbeállítások>értesítései lehetőséget a projekthez.
  2. Válassza ki, hogy milyen típusú értesítést szeretne kapni. Ha értesítést szeretne kapni minden alkalommal, amikor egy folyamat futtatása meghiúsul, válassza az A build meghiúsulása lehetőséget.

Képernyőkép a projektbeállítások értesítéseiről.

A folyamatnak engedélyre van szüksége egy erőforrás eléréséhez, mielőtt a futtatás folytatódna

Ha úgy tűnik, hogy a folyamat nem indul el, vagy egy hasonló This pipeline needs permission to access a resource before this run can continuehibaüzenet jelenik meg, ellenőrizze, hogy a folyamat egy erőforrás által futtatandó engedélyezésre vár-e, például szolgáltatáskapcsolatra vagy ügynökkészletre.

  1. Lépjen a folyamatra , és indítsa el manuálisan a futtatásokat.
  2. Az üzenet : A folyamatnak engedélyre van szüksége egy erőforrás eléréséhez, mielőtt a futtatás folytatódhat . Válassza az üzenet melletti Nézet lehetőséget .
  3. A Várakozás felülvizsgálatra képernyőn válassza az Engedélyezés lehetőséget, majd a megerősítést kérő képernyőn válassza ismét az Engedélyezés lehetőséget .

Ez a művelet kifejezetten hozzáadja a folyamatot az erőforrás jogosult felhasználójaként.

Kétféleképpen engedélyezheti a csővezetékeket az ügynökök erőforráshalmazának eléréséhez.

Konkrét csővezetékek engedélyezése

Egyedileg engedélyezheti, hogy bizonyos folyamatok egy ügynökkészletben fussanak. Ehhez kövesse az előző szakaszban leírt eljárást, amikor egy ilyen üzenetet kap, például This pipeline needs permission to access a resource before this run can continue.

Az alábbi eljárás végrehajtásával manuálisan is hozzáadhat és eltávolíthat folyamatokat az engedélyezett listából. Ez az eljárás az Azure DevOps-szervezet projektszintjén történik.

  1. Az Azure DevOpsban nyissa meg a Project beállításait, az Ügynökkészleteket, válassza ki a saját üzemeltetésű készletét, és válassza a Biztonság lehetőséget.
  2. Válassza a + lehetőséget, hogy hozzáadja a pipeline-t az engedélyezett listához.
  3. Az X(Hozzáférés visszavonása) lehetőséget választva eltávolíthat egy folyamatot az engedélyezett listáról.

Nyílt hozzáférés konfigurálása

Egyes erőforrások lehetővé teszik a nyílt hozzáférés konfigurálását, hogy minden új folyamatdefiníció ne igényeljen explicit engedélyezést.

A Nyílt hozzáférés konfigurálása projektadminisztrátori engedélyeket igényel.

Az ügynökkészletek nyílt hozzáférésének konfigurálása:

  1. Az Azure DevOpsban nyissa meg a Project beállításait, az Ügynökkészleteket, válassza ki a saját üzemeltetésű készletét, és válassza a Biztonság lehetőséget.
  2. Válassza a További műveletek, a Hozzáférés megnyitása lehetőséget a nyílt hozzáférés engedélyezéséhez, majd a hozzáférés ismételt megnyitása lehetőséget a megerősítéshez.
  3. A nyílt hozzáférés visszavonásához válassza az Engedély korlátozása lehetőséget.

Annak ellenőrzéséhez, hogy a nyílt hozzáférés elérhető-e más erőforrástípusokhoz, olvassa el a Biztonság kezelése az Azure Pipelinesban című témakört, és keressen nyílt hozzáférésre.

További információ az ügynökkészletek nyílt hozzáféréséről : Folyamatengedélyek beállítása egyéni ügynökkészlethez és folyamatengedélyekhez.

Feladat időkorlátja lejárt

A folyamatok hosszú ideig futhatnak, majd a feladat időtúllépése miatt meghiúsulhatnak. A feladat időtúllépése szorosan függ a használt ügynöktől. A Microsoft által üzemeltetett ingyenes ügynökök feladatonként legfeljebb 60 perc időtúllépéssel rendelkeznek egy privát adattár esetében, nyilvános adattár esetén pedig 360 perccel.

A feladat maximális időtúllépési értékének növeléséhez az alábbiak bármelyikét választhat.

  • Vásároljon egy Microsoft által üzemeltetett ügynököt, amely 360 percet biztosít minden feladathoz, függetlenül a használt adattártól
  • Használjon saját üzemeltetésű ügynököt, amellyel kizárhatja az ügynök miatt felmerülő időtúllépési problémákat

További információ a munkafolyamat időtúllépéséről.

Megjegyzés

Ha a Microsoft által üzemeltetett ügynökfeladatok túllépik az időkorlátot, ellenőrizze, hogy a folyamat időtúllépése nagyobb értékre van-e beállítva, mint egy feladat maximális időtúllépése. Az ellenőrzéshez tekintse meg az időtúllépéseket.

Kód letöltésével kapcsolatos problémák

A folyamatom egy ellenőrzési lépésen meghiúsul

Ha egy olyan Azure Repos Git-adattárban, amely a folyamathoz képest eltérő projektben található a szervezetén belül, használ egy checkout lépést, győződjön meg arról, hogy a feladat engedélyezési hatókörét az aktuális projektre korlátozó beállítás le van tiltva, vagy kövesse a hatókörrel rendelkező buildidentitások lépéseit annak biztosítása érdekében, hogy a folyamat hozzáférjen az adattárhoz.

Ha a folyamat korlátozott feladat-engedélyezési hatókör miatt nem fér hozzá az adattárhoz, a hibaüzenetet Git fetch failed with exit code 128 kapja, és a naplók a következőhöz hasonló bejegyzést tartalmaznak: Remote: TF401019: The Git repository with name or identifier <your repo name> does not exist or you do not have permissions for the operation you are attempting.

Ha a folyamat azonnal Could not find a project that corresponds with the repositorymeghiúsul, győződjön meg arról, hogy a projekt és az adattár neve helyes a checkout lépésben vagy az adattár erőforrás-deklarációjában.

A Team Foundation verziókövetési (TFVC) problémái

Nem sikerül beszerezni a fájlok letöltéséhez szükséges forrásokat

A parancs "Minden fájl naprakész" üzenete jelenhet meg a tf get naplóban. Ellenőrizze, hogy a beépített szolgáltatásidentitás rendelkezik-e engedéllyel a források letöltésére. Az identitás projektgyűjtemény buildelési szolgáltatásának vagy a Project Build Service-nek engedélyre van szüksége a források letöltéséhez a buildelési folyamat Általános lapján kiválasztott engedélyezési hatókörtől függően. A verziókövetés webes felhasználói felületén a mappahierarchia bármely szintjén tallózhat a projektfájlok között, és ellenőrizheti a biztonsági beállításokat.

Források lekérése a Team Foundation proxyn keresztül

A legegyszerűbben úgy konfigurálhatja az ügynököt, hogy forrásokhoz jusson a Team Foundation-proxyn keresztül, ha olyan környezeti változót TFSPROXY állít be, amely az ügynök felhasználóként való futtatásához a TFVC proxykiszolgálóra mutat.

Windows:

    set TFSPROXY=http://tfvcproxy:8081
    setx TFSPROXY=http://tfvcproxy:8081 // If the agent service is running as NETWORKSERVICE or any service account you can't easily set user level environment variable

macOS/Linux:

    export TFSPROXY=http://tfvcproxy:8081

A folyamat meghiúsul egy parancssori lépésen, például az MSBUILD-n

Hasznos leszűkíteni, hogy a build- vagy kiadási hiba egy Azure Pipelines-termékkel kapcsolatos probléma (ügynök vagy feladat) eredménye-e. A buildelési és kiadási hibák külső parancsokból is eredhetnek.

Ellenőrizze a naplókban, hogy a hibás feladat pontosan végrehajtja-e a parancssort. A parancs parancssorból történő helyi futtatásának megkísérlése reprodukálhatja a problémát. Hasznos lehet, ha a parancsot helyileg futtatja a saját gépéről, és/vagy bejelentkezik a gépre, és szolgáltatásfiókként futtatja a parancsot.

Például a probléma a buildelési folyamat MSBuild része alatt jelentkezik (például az MSBuild vagy a Visual Studio Build feladatot használja)? Ha igen, próbálja meg ugyanazt az MSBuild parancsot futtatni egy helyi gépen ugyanazokkal az argumentumokkal. Ha egy helyi gépen reprodukálhatja a problémát, a következő lépés az MSBuild hiba kivizsgálása.

Fájlelrendezés

A buildhez szükséges eszközök, kódtárak, fejlécek és egyéb elemek helye eltérő lehet az üzemeltetett ügynökön, mint a helyi gépen. Ha egy build meghiúsul, mert nem találja az egyik ilyen fájlt, az alábbi szkriptekkel megvizsgálhatja a fájlok helyzetét az agenten. Ez segíthet a hiányzó fájl nyomon követésében.

Hozzon létre egy új YAML-folyamatot egy ideiglenes helyen (például egy új adattárat, amelyet hibaelhárítás céljából hoztak létre). A szkript úgy van megírva, hogy könyvtárakat keres az elérési útvonaladon. Igény szerint szerkesztheti a SEARCH_PATH= sort más helyeken való kereséshez.

# Script for Linux and macOS
pool: { vmImage: ubuntu-latest } # or whatever pool you use
steps:
- checkout: none
- bash: |
    SEARCH_PATH=$PATH  # or any colon-delimited list of paths
    IFS=':' read -r -a PathDirs <<< "$SEARCH_PATH"
    echo "##[debug] Found directories"
    for element in "${PathDirs[@]}"; do
        echo "$element"
    done;
    echo;
    echo;  
    echo "##[debug] Found files"
    for element in "${PathDirs[@]}"; do
        find "$element" -type f
    done
# Script for Windows
pool: { vmImage: windows-2019 } # or whatever pool you use
steps:
- checkout: none
- powershell: |
    $SEARCH_PATH=$Env:Path
    Write-Host "##[debug] Found directories"
    ForEach ($Dir in $SEARCH_PATH -split ";") {
      Write-Host "$Dir"
    }
    Write-Host ""
    Write-Host ""
    Write-Host "##[debug] Found files"
    ForEach ($Dir in $SEARCH_PATH -split ";") {
      Get-ChildItem $Dir -File -ErrorAction Continue | ForEach-Object -Process {
        Write-Host $_.FullName
      }
    }

Különbségek a helyi parancssor és az ügynök között

Ne feledje, hogy bizonyos különbségek akkor lépnek érvénybe, amikor parancsokat hajtanak végre egy helyi gépen, és amikor egy build vagy kiadás fut egy ügynökön. Ha az ügynök úgy van konfigurálva, hogy szolgáltatásként fusson Linux, macOS vagy Windows rendszeren, akkor nem egy interaktív bejelentkezett munkameneten belül fut. Interaktív bejelentkezett munkamenet nélkül a felhasználói felület interakciója és egyéb korlátozások léteznek.

Fájl- vagy mappahasználati hibák

File or folder in use hibaüzenetek jelzik a hibákat, például:

  • Access to the path [...] is denied.
  • The process cannot access the file [...] because it is being used by another process.
  • Access is denied.
  • Can't move [...] to [...]

Hibaelhárítási lépések:

A használatban lévő fájlok és mappák észlelése

Windows rendszeren az olyan eszközök, mint a Folyamatfigyelő , egy adott könyvtárban rögzíthetik a fájlesemények nyomkövetését. A pillanatképek időben történő létrehozásához olyan eszközök is használhatók, mint a Process Explorer vagy a Handle .

Antivírus kivételek

A víruskereső szoftver fájlok beolvasása közben építés vagy kiadás során használatban lévő fájl- vagy mappahibákat okozhat. A vírusvédelmi kizárás hozzáadása az ügynökkönyvtárhoz és a "munkahelyi mappa" konfigurálásával segíthet azonosítani a vírusirtó szoftvert, mint zavaró tényezőt.

MSBuild és /nodeReuse:false

Ha a build során meghívja az MSBuild parancsot, mindenképpen adja meg az argumentumot /nodeReuse:false (rövid űrlap /nr:false). Ellenkező esetben az MSBuild-folyamatok a build befejezése után is futnak. A folyamatok egy ideig várakoznak egy esetleges későbbi build reményében.

Az MSBuild ezen funkciója zavarhatja a címtárak törlésére vagy áthelyezésére tett kísérleteket – az MSBuild-folyamatok munkakönyvtárával való ütközés miatt.

Az MSBuild és a Visual Studio buildelési feladatai már hozzáadják /nr:false az MSBuild-nek átadott argumentumokhoz. Ha azonban saját szkriptből hívja meg az MSBuild parancsot, meg kell adnia az argumentumot.

MSBuild és /maxcpucount:[n]

Alapértelmezés szerint az olyan buildelési feladatok, mint az MSBuild és a Visual Studio Build , az MSBuild parancsot futtatják a /m kapcsolóval. Bizonyos esetekben ez problémákat okozhat, például több folyamatfájl-hozzáférési problémát.

Próbálja meg hozzáadni az argumentumot a /m:1 buildelési tevékenységekhez, hogy kényszerítse az MSBuildet, hogy egyszerre csak egy folyamatot futtasson.

A használatban lévő fájlokkal kapcsolatos problémák akkor fordulhatnak elő, ha az MSBuild egyidejű folyamat funkcióját használja. Ha nem adja meg az argumentumot /maxcpucount:[n] (rövid űrlap /m:[n]) az MSBuild parancsot utasítja arra, hogy csak egyetlen folyamatot használjon. Ha az MSBuild vagy a Visual Studio buildelési feladatait használja, előfordulhat, hogy meg kell adnia a "/m:1" értéket az alapértelmezés szerint hozzáadott "/m" argumentum felülbírálásához.

Időszakos vagy inkonzisztens MSBuild hibák

Ha időszakos vagy inkonzisztens MSBuild-hibákat tapasztal, próbálja meg arra utasítani az MSBuildet, hogy csak egyetlen folyamatot használjon. Időszakos vagy inkonzisztens hibák azt jelezhetik, hogy a célkonfiguráció nem kompatibilis az MSBuild egyidejű folyamat funkciójával. Lásd: MSBuild és /maxcpucount:[n].

A folyamat leállt

A folyamat nem válaszol az okokra és a hibaelhárítási lépésekre:

Várakozás bemenetre

A válaszadást leállító folyamat azt jelezheti, hogy egy folyamat a bemenetre vár.

Ha egy interaktív bejelentkezett munkamenet parancssorából futtatja az ügynököt, az segíthet annak azonosításában, hogy egy folyamat egy párbeszédpanelen kéri-e a bemenetet.

Az ügynök szolgáltatásként való futtatása segíthet abban, hogy a programok ne kérjenek bemenetet. A .NET-ben például a programok a System.Environment.UserInteractive logikai változóra támaszkodhatnak annak eldöntéséhez, hogy megjelenítsenek-e párbeszédablakot. Ha az ügynök Windows-szolgáltatásként fut, az érték hamis.

Folyamatkép

A folyamat memóriaképének elemzése segíthet azonosítani, hogy egy holtpontú folyamat mire vár.

WiX-projekt

Egy WiX-projekt építése során, amikor egyéni MSBuild-naplózók engedélyezve vannak, holtpont léphet fel, miközben a kimeneti streamre vár. A további MSBuild argumentum /p:RunWixToolsOutOfProc=true hozzáadása megkerüli a problémát.

Több platform vonalvégződései

Ha több platformon futtat folyamatokat, előfordulhat, hogy problémákba ütközik a különböző vonalvégződésekkel. Korábban a Linux és a macOS soremelés (LF) karaktereket használt, míg a Windows kocsi visszatérés és soremelés (CRLF) karaktereket használt. A Git úgy próbálja kompenzálni a különbséget, hogy a sorok automatikusan LF-ben végződnek az adattárban, azonban a CRLF-el végződnek a Windows munkakönyvtárában.

A legtöbb Windows-eszköz általában jól kezeli a csak LF végződéseket, és ez az automatikus viselkedés több problémát okozhat, mint amennyit megold. Ha a vonalvégződéseken alapuló problémákat tapasztal, javasoljuk, hogy konfigurálja a Gitet, hogy mindenhol az LF-t válassza. Ehhez adjon hozzá egy .gitattributes fájlt az adattár gyökeréhez. Ebben a fájlban adja hozzá a következő sort:

* text eol=lf

Olyan változók, amelyekhez hozzá van fűzve a " (egyetlen idézőjel)

Ha a folyamat tartalmaz egy Bash-szkriptet, amely a parancs használatával állítja be a ##vso változókat, előfordulhat, hogy egy másik ' hozzáfűzve van a beállított változó értékéhez. Ennek oka az interakció a következővel: set -x. A megoldás a set -x átmeneti letiltása egy változó beállítása előtt. Az ehhez használandó Bash-szintaxis: set +x.

set +x
echo ##vso[task.setvariable variable=MY_VAR]my_value
set -x

Miért történik ez?

Számos Bash-szkript tartalmazza a set -x hibakeresést segítő parancsot. A Bash pontosan nyomon követi, hogy milyen parancsot hajtottak végre, és az stdout-ra visszhangozza. Ez azt eredményezi, hogy az ügynök kétszer látja a ##vso parancsot, másodszor pedig a Bash hozzáadja a ' karaktert a végéhez.

Vegyük például ezt a csővezetéket:

steps:
- bash: |
    set -x
    echo ##vso[task.setvariable variable=MY_VAR]my_value

Az stdouton az ügynök két sort lát:

##vso[task.setvariable variable=MY_VAR]my_value
+ echo '##vso[task.setvariable variable=MY_VAR]my_value'

Amikor az ügynök az első sort látja, MY_VAR a megfelelő értékre lesz állítva: "my_value". Ha azonban a második sort látja, az ügynök mindent a sor végéig feldolgoz. MY_VAR értéke „my_value'” lett beállítva.

A szkript végrehajtásakor a kódtárak nincsenek telepítve a Python-alkalmazáshoz

Egy Python-alkalmazás üzembe helyezésekor bizonyos esetekben egy CI/CD-folyamat fut, és a kód telepítése sikeresen megtörtént, de az összes függőségi kódtár telepítéséért felelős requirements.txt fájl nem fut.

A függőségek telepítéséhez használjon üzembe helyezés utáni szkriptet az App Service üzembe helyezési feladatában. Az alábbi példa azt a parancsot mutatja be, amelyet az üzembe helyezés utáni szkriptben kell használnia. A forgatókönyv szkriptje frissíthető.

D:\home\python364x64\python.exe -m pip install -r requirements.txt

A szolgáltatáskapcsolatokkal kapcsolatos problémák elhárításához tekintse meg a szolgáltatáskapcsolatok hibaelhárítását. A számítási feladat identitását használó szolgáltatáskapcsolatok hitelesítéshez való konkrét hibaelhárításához tekintse meg a számítási feladatok identitásszolgáltatás-kapcsolatainak hibaelhárítását.

A csatorna megszűnt kommunikálni az ügynökkel

Ha a folyamat egy ilyen We stopped hearing from agent <agent name>. Verify the agent machine is running and has a healthy network connection.üzenettel meghiúsul, ellenőrizze az ügynök erőforrás-kihasználtságát, hogy az ügynök gépe elfogy-e az erőforrásokból. A Sprint 228-tól kezdve az Azure Pipelines-naplók minden lépéshez tartalmaznak erőforrás-kihasználtsági metrikákat .

Az Azure DevOps Services használatakor részletes naplók engedélyezésével láthatja az erőforrás-kihasználtságot a naplókban, beleértve a lemezhasználatot, a memóriahasználatot és a processzorhasználatot. Amikor a folyamat befejeződik, .

2024-02-28T17:41:15.1315148Z ##[debug]Agent environment resources - Disk: D:\ Available 12342.00 MB out of 14333.00 MB, Memory: Used 1907.00 MB out of 7167.00 MB, CPU: Usage 17.23%

További erőforrás-kihasználtsági naplók rögzítéséről további információt az erőforrás-kihasználtság rögzítése című témakörben talál.

A Storage Explorer engedélyezése statikus tartalmak, például .css és .js statikus webhelyre való üzembe helyezéséhez az Azure DevOpsból az Azure Pipelineson keresztül

Ebben a forgatókönyvben az Azure File Copy feladat használatával tölthet fel tartalmat a webhelyre. A Tartalom feltöltése szakaszban leírt eszközök bármelyikével feltölthet tartalmakat a webtárolóba.

Következő lépések