Share via


Naplózási parancsok

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

A naplózási parancsok segítségével kommunikálhatnak a feladatok és szkriptek az ügynökkel. Olyan műveleteket fednek le, mint az új változók létrehozása, a lépések sikertelenként való megjelölése és az összetevők feltöltése. A naplózási parancsok hasznosak egy folyamat hibaelhárítása során.

Fontos

Igyekszünk elfedni a titkos kulcsokat az Azure Pipelines kimenetében való megjelenéstől, de óvintézkedéseket kell tennie. Soha ne visszhangozza a titkos kulcsokat kimenetként. Néhány operációs rendszer naplójának parancssori argumentumai. Soha ne adjon át titkos kulcsokat a parancssorban. Ehelyett azt javasoljuk, hogy a titkos kulcsokat környezeti változókra képezheti le.

Soha nem maszkoljuk a titkos kódok részszúrásait. Ha például az "abc123" titkos kódként van beállítva, az "abc" nem maszkolódik a naplókból. Ennek az az oka, hogy a titkos kulcsok túl részletes elfedésének elkerülése érdekében a naplók olvashatatlanok lesznek. Ezért a titkos kódok nem tartalmazhatnak strukturált adatokat. Ha például a"{ "foo": "bar" }" titkos kódként van beállítva, a "bar" nem lesz maszkolva a naplókból.

Típus Parancsok
Feladatparancsok AddAttachment, Complete, LogDetail, LogIssue, PrependPath, SetEndpoint, SetProgress, SetVariable, SetSecret, UploadFile, UploadSummary
Összetevő-parancsok Társítás, feltöltés
Parancsok összeállítása AddBuildTag, UpdateBuildNumber, UploadLog
Kiadási parancsok UpdateReleaseName

Naplózási parancs formátuma

A naplózási parancsok általános formátuma a következő:

##vso[area.action property1=value;property2=value;...]message

Van néhány formázási parancs is, amelyek kissé eltérő szintaxist használnak:

##[command]message

A naplózási parancs meghívásához a parancsot a standard kimeneten keresztül kell megismételni.

#!/bin/bash
echo "##vso[task.setvariable variable=testvar;]testvalue"

A fájlelérési útvonalakat abszolút elérési útként kell megadni: a windowsos meghajtón gyökerezik, vagy Linuxon és macOS-en kezdődik / .

Feljegyzés

Vegye figyelembe, hogy Linux vagy macOS használata esetén a naplózási parancs előtt nem használhatja set -x a parancsot. Tekintse meg a hibaelhárítást, amelyből megtudhatja, hogyan tilthatja le set -x ideiglenesen a Basht.

Formázási parancsok

Feljegyzés

UTF-8 kódolás használata naplózási parancsokhoz.

Ezek a parancsok az Azure Pipelines naplófájl-formázójának küldött üzenetek. Hibaként, figyelmeztetésként, összecsukható szakaszként jelölnek meg bizonyos naplósorokat stb.

A formázási parancsok a következők:

##[group]Beginning of a group
##[warning]Warning message
##[error]Error message
##[section]Start of a section
##[debug]Debug text
##[command]Command-line being run
##[endgroup]

A formázási parancsokat bash- vagy PowerShell-feladatban is használhatja.

steps:
- bash: |
    echo "##[group]Beginning of a group"
    echo "##[warning]Warning message"
    echo "##[error]Error message"
    echo "##[section]Start of a section"
    echo "##[debug]Debug text"
    echo "##[command]Command-line being run"
    echo "##[endgroup]"

Ezek a parancsok a következőképpen jelennek meg a naplókban:

Képernyőkép az egyéni formázási beállításokkal rendelkező naplókról

Ez a parancsblokk is összecsukható, és így néz ki:

Képernyőkép a naplók összecsukott szakaszáról

Feladatparancsok

LogIssue: Hiba vagy figyelmeztetés naplózása

##vso[task.logissue]error/warning message

Használat

Hiba vagy figyelmeztető üzenet naplózása az aktuális tevékenység ütemtervrekordjában.

Tulajdonságok

  • type = error vagy warning (Kötelező)
  • sourcepath = forrásfájl helye
  • linenumber = sorszám
  • columnnumber = oszlopszám
  • code = hiba vagy figyelmeztető kód

Példa: Hiba naplózása

#!/bin/bash
echo "##vso[task.logissue type=error]Something went very wrong."
exit 1

Tipp.

exit 1 nem kötelező, de gyakran olyan parancs, amelyet a hiba naplózása után hamarosan kiad. Ha a Vezérlőbeállítások: Folytatás hiba esetén lehetőséget választja, akkor a sikertelen build helyett részben exit 1 sikeres buildet fog eredményezni. Alternatív megoldásként használhatja task.logissue type=erroris.

Példa: Figyelmeztetés naplózása egy fájl adott helyére vonatkozóan

#!/bin/bash
echo "##vso[task.logissue type=warning;sourcepath=consoleapp/main.cs;linenumber=1;columnnumber=1;code=100;]Found something that could be a problem."

SetProgress: A kész százalékos érték megjelenítése

##vso[task.setprogress]current operation

Használat

Állítsa be az aktuális tevékenység állapotát és aktuális műveletét.

Tulajdonságok

  • value = a befejezés százalékos aránya

Példa

echo "Begin a lengthy process..."
for i in {0..100..10}
do
   sleep 1
   echo "##vso[task.setprogress value=$i;]Sample Progress Indicator"
done
echo "Lengthy process is complete."

A megjelenés megtekintéséhez mentse és várólistára helyezze a buildet, majd figyelje a build futtatását. Figyelje meg, hogy egy folyamatjelző megváltozik, amikor a feladat futtatja ezt a szkriptet.

Kész: Befejezési idővonal

##vso[task.complete]current operation

Használat

Fejezze be az aktuális tevékenység ütemtervrekordját, állítsa be a tevékenység eredményét és az aktuális műveletet. Ha az eredmény nincs megadva, állítsa az eredményt sikeresnek.

Tulajdonságok

  • result =
    • Succeeded A feladat sikeres volt.
    • SucceededWithIssues A feladat problémákba ütközött. A build a legjobb esetben részben sikeres lesz.
    • Failed A build sikertelenként fejeződik be. (Ha a Vezérlési beállítások: A Folytatás hibalehetőség van kiválasztva, a build a legjobb esetben részben sikeres lesz.)

Példa

Feladat naplózása sikeresként.

##vso[task.complete result=Succeeded;]DONE

Feladat beállítása sikertelenként. Alternatív megoldásként használhatja exit 1is.

- bash: |
    if [ -z "$SOLUTION" ]; then
      echo "##vso[task.logissue type=error;]Missing template parameter \"solution\""
      echo "##vso[task.complete result=Failed;]"
    fi

LogDetail: Feladat ütemtervrekordjának létrehozása vagy frissítése

##vso[task.logdetail]current operation

Használat

Idősorrekordokat hoz létre és frissít. Ezt az Azure Pipelines elsősorban belsőleg használja a lépések, feladatok és szakaszok jelentésére. Bár az ügyfelek bejegyzéseket adhatnak az ütemtervhez, általában nem jelennek meg a felhasználói felületen.

Amikor első alkalommal látunk ##vso[task.detail] egy lépést, létrehozunk egy "részletes ütemterv" rekordot a lépéshez. Létrehozhatjuk és frissíthetjük a beágyazott idősorrekordokat az és a idparentid.

A feladatkészítőknek emlékezniük kell arra, hogy melyik GUID-t használták az egyes idősorrekordokhoz. A naplózási rendszer nyomon követi az egyes idősorrekordok GUID-azonosítóját, így minden új GUID új ütemtervrekordot eredményez.

Tulajdonságok

  • id = Idősorrekord GUID azonosítója (kötelező)
  • parentid = Szülő ütemtervrekord GUID azonosítója
  • type = Rekordtípus (első alkalommal kötelező, nem írható felül)
  • name = Rekordnév (első alkalommal kötelező, nem írható felül)
  • order = idősorrekord sorrendje (első alkalommal szükséges, nem írható felül)
  • starttime = Datetime
  • finishtime = Datetime
  • progress = a befejezés százalékos aránya
  • state = Unknown | Initialized | InProgress | Completed
  • result = Succeeded | SucceededWithIssues | Failed

Példák

Hozzon létre új gyökér-idősorrekordot:

##vso[task.logdetail id=new guid;name=project1;type=build;order=1]create new timeline record

Új beágyazott ütemtervrekord létrehozása:

##vso[task.logdetail id=new guid;parentid=exist timeline record guid;name=project1;type=build;order=1]create new nested timeline record

Frissítési idővonalrekord:

##vso[task.logdetail id=existing timeline record guid;progress=15;state=InProgress;]update timeline record

SetVariable: Egy változó értékének inicializálása vagy módosítása

##vso[task.setvariable]value

Használat

Beállít egy változót a taskcontext változószolgáltatásában. Az első tevékenység beállíthat egy változót, és a következő tevékenységek használhatják a változót. A változó környezeti változóként az alábbi feladatoknak lesz kitéve.

Ha issecret be van állítva true, a változó értéke titkosként lesz mentve, és a naplóból maszkolva lesz. A titkos változók nem környezeti változóként kerülnek át a tevékenységekbe, hanem bemenetként kell átadni őket.

Ha isoutput a megadott változóra hivatkozó szintaxisra van állítva true , az attól függően változik, hogy ugyanabban a feladatban, egy jövőbeli feladatban vagy egy jövőbeli szakaszban éri-e el a változót. Emellett, ha isoutput a változó ugyanazon feladaton belüli használatára vonatkozó szintaxisra van állítva false , az eltérő. Az egyes használati esetek megfelelő szintaxisának meghatározásához tekintse meg a kimeneti változók szintjeit.

További részletekért tekintse meg a változók beállítását a szkriptekben , és definiáljon változókat .

Tulajdonságok

  • variable = változó neve (kötelező)
  • issecret = logikai (nem kötelező, alapértelmezés szerint hamis)
  • isoutput = logikai (nem kötelező, alapértelmezés szerint hamis)
  • isreadonly = logikai (nem kötelező, alapértelmezés szerint hamis)

Példák

Állítsa be a változókat:

- bash: |
    echo "##vso[task.setvariable variable=sauce;]crushed tomatoes"
    echo "##vso[task.setvariable variable=secretSauce;issecret=true]crushed tomatoes with garlic"
    echo "##vso[task.setvariable variable=outputSauce;isoutput=true]canned goods"
  name: SetVars

Olvassa el a változókat:

- bash: |
    echo "Non-secrets automatically mapped in, sauce is $SAUCE"
    echo "Secrets are not automatically mapped in, secretSauce is $SECRETSAUCE"
    echo "You can use macro replacement to get secrets, and they'll be masked in the log: $(secretSauce)"

Konzol kimenete:

Non-secrets automatically mapped in, sauce is crushed tomatoes
Secrets are not automatically mapped in, secretSauce is 
You can use macro replacement to get secrets, and they'll be masked in the log: ***
Future jobs can also see canned goods
Future jobs can also see canned goods

SetSecret: Érték regisztrálása titkos kódként

##vso[task.setsecret]value

Használat

Az érték a feladat időtartamára titkos kódként van regisztrálva. Az érték el lesz maszkolva a naplókból ebből a pontból előre. Ez a parancs akkor hasznos, ha egy titkos kód (például base64 kódolású) vagy származtatott lesz.

Megjegyzés: A titkos kód értékének korábbi előfordulásai nem lesznek maszkolva.

Példák

Állítsa be a változókat:

- bash: |
    NEWSECRET=$(echo $OLDSECRET|base64)
    echo "##vso[task.setsecret]$NEWSECRET"
  name: SetSecret
  env:
    OLDSECRET: "SeCrEtVaLuE"

Olvassa el a változókat:

- bash: |
    echo "Transformed and derived secrets will be masked: $(echo $OLDSECRET|base64)"
  env:
    OLDSECRET: "SeCrEtVaLuE"

Konzol kimenete:

Transformed and derived secrets will be masked: ***

SetEndpoint: Szolgáltatáskapcsolati mező módosítása

##vso[task.setendpoint]value

Használat

Adjon meg egy szolgáltatáskapcsolati mezőt megadott értékkel. A frissített érték megmarad a végponton az ugyanazon a feladaton belül végrehajtott további tevékenységeknél.

Tulajdonságok

  • id = szolgáltatáskapcsolat azonosítója (kötelező)
  • field = mezőtípus, az egyik authParameter, dataParametervagy url (Kötelező)
  • key= kulcs (Kötelező, kivéve)field = url

Példák

##vso[task.setendpoint id=000-0000-0000;field=authParameter;key=AccessToken]testvalue
##vso[task.setendpoint id=000-0000-0000;field=dataParameter;key=userVariable]testvalue
##vso[task.setendpoint id=000-0000-0000;field=url]https://example.com/service

AddAttachment: Fájl csatolása a buildhez

##vso[task.addattachment]value

Használat

Melléklet feltöltése és csatolása az aktuális ütemtervrekordhoz. Ezek a fájlok nem tölthetők le naplókkal. Ezekre csak a típus- vagy névértékeket használó bővítmények hivatkozhatnak.

Tulajdonságok

  • type = melléklet típusa (kötelező)
  • name = melléklet neve (kötelező)

Példa

##vso[task.addattachment type=myattachmenttype;name=myattachmentname;]c:\myattachment.txt

UploadSummary: Markdown-tartalom hozzáadása a build összegzéséhez

##vso[task.uploadsummary]local file path

Használat

Töltse fel és csatolja az összefoglaló Markdownt az adattárban lévő .md fájlból az aktuális ütemtervrekordhoz. Ezt az összefoglalást hozzá kell adni a build/kiadás összegzéséhez, és nem lehet letöltődni naplókkal. Az összefoglalásnak UTF-8 vagy ASCII formátumban kell lennie. Az összegzés megjelenik a folyamatfuttatás Bővítmények lapján. A Markdown-renderelés a Bővítmények lapon eltér az Azure DevOps wikimegjelenítésétől.

Példák

##vso[task.uploadsummary]$(System.DefaultWorkingDirectory)/testsummary.md

Ez egy rövid kézforma a parancshoz

##vso[task.addattachment type=Distributedtask.Core.Summary;name=testsummaryname;]c:\testsummary.md

UploadFile: Feladatnaplókkal letölthető fájl feltöltése

##vso[task.uploadfile]local file path

Használat

Töltse fel a felhasználót érdeklő fájlt további naplóadatokként az aktuális idősorrekordra. A fájlnak letölthetőnek kell lennie a feladatnaplókkal együtt.

Példa

##vso[task.uploadfile]c:\additionalfile.log

PrependPath: A PATH környezeti változó elérési útjának előre fel van függesztetve

##vso[task.prependpath]local file path

Használat

Frissítse a PATH környezeti változót a PATH-ra való előerősítéssel. A frissített környezeti változó a következő tevékenységekben is megjelenik.

Példa

##vso[task.prependpath]c:\my\directory\path

Összetevő-parancsok

Társítás: Összetevő inicializálása

##vso[artifact.associate]artifact location

Használat

Meglévő összetevőre mutató hivatkozás létrehozása. Az összetevő helyének fájltároló elérési útnak, VC-elérési útnak vagy UNC megosztási elérési útnak kell lennie.

Tulajdonságok

  • artifactname = összetevő neve (kötelező)
  • type = összetevő típusa (kötelező) container | filepath | versioncontrol | gitref | tfvclabel

Példák

  • Konténer

    ##vso[artifact.associate type=container;artifactname=MyServerDrop]#/1/build
    
  • filepath

    ##vso[artifact.associate type=filepath;artifactname=MyFileShareDrop]\\MyShare\MyDropLocation
    
  • versioncontrol

    ##vso[artifact.associate type=versioncontrol;artifactname=MyTfvcPath]$/MyTeamProj/MyFolder
    
  • gitref

    ##vso[artifact.associate type=gitref;artifactname=MyTag]refs/tags/MyGitTag
    
  • tfvclabel

    ##vso[artifact.associate type=tfvclabel;artifactname=MyTag]MyTfvcLabel
    
  • Egyéni összetevő

    ##vso[artifact.associate artifactname=myDrop;artifacttype=myartifacttype]https://downloads.visualstudio.com/foo/bar/package.zip
    

Feltöltés: Összetevő feltöltése

##vso[artifact.upload]local file path

Használat

Töltsön fel egy helyi fájlt egy fájltároló mappájába, és opcionálisan közzétesz egy összetevőt.artifactname

Tulajdonságok

  • containerfolder = az a mappa, amelybe a fájl fel lesz töltve, szükség esetén létrejön a mappa.
  • artifactname = összetevő neve. (Kötelező)

Példa

##vso[artifact.upload containerfolder=testresult;artifactname=uploadedresult]c:\testresult.trx

Feljegyzés

Az Artifact.associate és az Artifact.upload közötti különbség az, hogy az első használható egy meglévő összetevőre mutató hivatkozás létrehozására, míg az utóbbi egy új összetevő feltöltésére/közzétételére.

Parancsok összeállítása

UploadLog: Napló feltöltése

##vso[build.uploadlog]local file path

Használat

Töltse fel a felhasználót érdeklő naplót a build tárolójának "logs\tool" mappájába.

Példa

##vso[build.uploadlog]c:\msbuild.log

UpdateBuildNumber: Az automatikusan létrehozott buildszám felülbírálása

##vso[build.updatebuildnumber]build number

Használat

A folyamatbeállításokban megadott jogkivonatokból automatikusan létrehozhat buildszámot. Ha azonban a saját logikáját szeretné használni a buildszám beállításához, használhatja ezt a naplózási parancsot.

Példa

##vso[build.updatebuildnumber]my-new-build-number

AddBuildTag: Címke hozzáadása a buildhez

##vso[build.addbuildtag]build tag

Használat

Adjon hozzá egy címkét az aktuális buildhez. A címkét kibonthatja egy előre definiált vagy felhasználó által definiált változóval. Itt például egy új címke lesz hozzáadva egy Bash-feladathoz az értékkel last_scanned-$(currentDate). Az AddBuildTag nem használható kettősponttal.

Példa

- task: Bash@3
    inputs:
    targetType: 'inline'
    script: |
        last_scanned="last_scanned-$(currentDate)"
        echo "##vso[build.addbuildtag]$last_scanned"
    displayName: 'Apply last scanned tag'

Kiadási parancsok

UpdateReleaseName: Az aktuális kiadás átnevezése

##vso[release.updatereleasename]release name

Használat

Frissítse a futó kiadás kiadási nevét.

Feljegyzés

Az Azure DevOps és az Azure DevOps Server 2020-tól kezdve támogatott.

Példa

##vso[release.updatereleasename]my-new-release-name