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:
Ez a parancsblokk is összecsukható, és így néz ki:
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
vagywarning
(Kötelező)sourcepath
= forrásfájl helyelinenumber
= sorszámcolumnnumber
= oszlopszámcode
= 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=error
is.
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 1
is.
- 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 id
parentid
.
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ójatype
= 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ányastate
=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 egyikauthParameter
,dataParameter
vagyurl
(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