Loggningskommandon
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Loggningskommandon är hur uppgifter och skript kommunicerar med agenten. De omfattar åtgärder som att skapa nya variabler, markera ett steg som misslyckat och ladda upp artefakter. Loggningskommandon är användbara när du felsöker en pipeline.
Viktigt!
Vi gör ett försök att maskera hemligheter från att visas i Azure Pipelines-utdata, men du måste fortfarande vidta försiktighetsåtgärder. Upprepa aldrig hemligheter som utdata. Vissa operativsystem loggar kommandoradsargument. Skicka aldrig hemligheter på kommandoraden. I stället föreslår vi att du mappar dina hemligheter till miljövariabler.
Vi maskerar aldrig understrängar av hemligheter. Om till exempel "abc123" anges som en hemlighet maskeras inte "abc" från loggarna. Detta är för att undvika maskering av hemligheter på en för detaljerad nivå, vilket gör loggarna olästa. Därför bör hemligheter inte innehålla strukturerade data. Om till exempel "{ "foo": "bar" }" har angetts som en hemlighet maskeras inte "bar" från loggarna.
Typ | Kommandon |
---|---|
Uppgiftskommandon | AddAttachment, Complete, LogDetail, LogIssue, PrependPath, SetEndpoint, SetProgress, SetVariable, SetSecret, UploadFile, UploadSummary |
Artefaktkommandon | Associera, ladda upp |
Skapa kommandon | AddBuildTag, UpdateBuildNumber, UploadLog |
Versionskommandon | UpdateReleaseName |
Loggningskommandoformat
Det allmänna formatet för ett loggningskommando är:
##vso[area.action property1=value;property2=value;...]message
Det finns också några formateringskommandon med en något annorlunda syntax:
##[command]message
Om du vill anropa ett loggningskommando upprepar du kommandot via standardutdata.
#!/bin/bash
echo "##vso[task.setvariable variable=testvar;]testvalue"
Filsökvägar bör anges som absoluta sökvägar: rotade på en enhet i Windows eller från och med /
i Linux och macOS.
Kommentar
Observera att du inte kan använda set -x
kommandot före ett loggningskommando när du använder Linux eller macOS. Se felsökning för att lära dig hur du inaktiverar set -x
tillfälligt för Bash.
Formateringskommandon
Kommentar
Använd UTF-8-kodning för loggningskommandon.
Dessa kommandon är meddelanden till loggformaterare i Azure Pipelines. De markerar specifika loggrader som fel, varningar, hopfällbara avsnitt och så vidare.
Formateringskommandona är:
##[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]
Du kan använda formateringskommandona i en bash- eller PowerShell-uppgift.
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]"
Dessa kommandon återges i loggarna så här:
Det här kommandoblocket kan också komprimeras och ser ut så här:
Uppgiftskommandon
LogIssue: Logga ett fel eller en varning
##vso[task.logissue]error/warning message
Användning
Logga ett fel eller varningsmeddelande i tidslinjeposten för den aktuella aktiviteten.
Egenskaper
type
=error
ellerwarning
(krävs)sourcepath
= källfilplatslinenumber
= radnummercolumnnumber
= kolumnnummercode
= fel- eller varningskod
Exempel: Logga ett fel
#!/bin/bash
echo "##vso[task.logissue type=error]Something went very wrong."
exit 1
Dricks
exit 1
är valfritt, men är ofta ett kommando som du kommer att utfärda strax efter att ett fel har loggats. Om du väljer Kontrollalternativ: Fortsätt vid felexit 1
resulterar det i en delvis lyckad version i stället för en misslyckad version. Du kan också använda task.logissue type=error
.
Exempel: Logga en varning om en specifik plats i en fil
#!/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: Visa att procentandelen har slutförts
##vso[task.setprogress]current operation
Användning
Ange förlopp och aktuell åtgärd för den aktuella aktiviteten.
Egenskaper
value
= procent av slutförande
Exempel
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."
Om du vill se hur det ser ut sparar du och köar bygget och tittar sedan på byggkörningen. Observera att en förloppsindikator ändras när aktiviteten kör det här skriptet.
Slutför: Tidslinje för slutförd
##vso[task.complete]current operation
Användning
Slutför tidslinjeposten för den aktuella aktiviteten, ange aktivitetsresultat och aktuell åtgärd. När resultatet inte har angetts anger du resultatet till lyckades.
Egenskaper
result
=Succeeded
Uppgiften lyckades.SucceededWithIssues
Uppgiften stötte på problem. Bygget slutförs i bästa möjliga mån som delvis slutfört.Failed
Bygget slutförs som misslyckat. (Om Kontrollalternativ: Alternativet Fortsätt vid fel har valts. Bygget slutförs i bästa fall som delvis slutfört.)
Exempel
Logga en uppgift som slutförd.
##vso[task.complete result=Succeeded;]DONE
Ange en aktivitet som misslyckad. Du kan också använda exit 1
.
- bash: |
if [ -z "$SOLUTION" ]; then
echo "##vso[task.logissue type=error;]Missing template parameter \"solution\""
echo "##vso[task.complete result=Failed;]"
fi
LogDetail: Skapa eller uppdatera en tidslinjepost för en uppgift
##vso[task.logdetail]current operation
Användning
Skapar och uppdaterar tidslinjeposter. Detta används främst internt av Azure Pipelines för att rapportera om steg, jobb och steg. Kunder kan lägga till poster i tidslinjen, men de visas vanligtvis inte i användargränssnittet.
Första gången vi ser ##vso[task.detail]
under ett steg skapar vi en "detaljerad tidslinje"-post för steget. Vi kan skapa och uppdatera kapslade tidslinjeposter som bygger på id
och parentid
.
Uppgiftsförfattare måste komma ihåg vilket GUID de använde för varje tidslinjepost. Loggningssystemet håller reda på GUID för varje tidslinjepost, så alla nya GUID resulterar i en ny tidslinjepost.
Egenskaper
id
= Tidslinjepostens GUID (krävs)parentid
= GUID för överordnad tidslinjeposttype
= Posttyp (krävs för första gången, kan inte skriva över)name
= Postnamn (krävs för första gången, kan inte skriva över)order
= Ordningen på tidslinjeposten (krävs för första gången, kan inte skriva över)starttime
=Datetime
finishtime
=Datetime
progress
= procent av slutförandestate
=Unknown
|Initialized
|InProgress
|Completed
result
=Succeeded
|SucceededWithIssues
|Failed
Exempel
Skapa en ny post för rottidslinjen:
##vso[task.logdetail id=new guid;name=project1;type=build;order=1]create new timeline record
Skapa ny kapslad tidslinjepost:
##vso[task.logdetail id=new guid;parentid=exist timeline record guid;name=project1;type=build;order=1]create new nested timeline record
Uppdatering finns tidslinjepost:
##vso[task.logdetail id=existing timeline record guid;progress=15;state=InProgress;]update timeline record
SetVariable: Initiera eller ändra värdet för en variabel
##vso[task.setvariable]value
Användning
Anger en variabel i variabeltjänsten för taskcontext. Den första aktiviteten kan ange en variabel och följande aktiviteter kan använda variabeln. Variabeln exponeras för följande uppgifter som en miljövariabel.
När issecret
är inställt på true
sparas värdet för variabeln som hemlighet och maskeras från loggen. Hemliga variabler skickas inte till aktiviteter som miljövariabler och måste i stället skickas som indata.
När isoutput
är inställt true
på syntaxen för att referera till den angivna variabeln varierar beroende på om du kommer åt variabeln i samma jobb, ett framtida jobb eller en framtida fas. Om är inställt false
på syntaxen för att använda variabeln inom samma jobb är dessutom isoutput
distinkt. Se nivåer av utdatavariabler för att fastställa lämplig syntax för varje användningsfall.
Mer information finns i ange variabler i skript och definiera variabler .
Egenskaper
variable
= variabelnamn (obligatoriskt)issecret
= booleskt värde (valfritt, standardvärdet falskt)isoutput
= booleskt värde (valfritt, standardvärdet falskt)isreadonly
= booleskt värde (valfritt, standardvärdet falskt)
Exempel
Ange variabler:
- 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
Läs variablerna:
- 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)"
Konsolutdata:
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: Registrera ett värde som en hemlighet
##vso[task.setsecret]value
Användning
Värdet registreras som en hemlighet under hela jobbet. Värdet maskeras från loggarna från och med nu. Det här kommandot är användbart när en hemlighet transformeras (t.ex. base64-kodad) eller härledd.
Obs! Tidigare förekomster av det hemliga värdet maskeras inte.
Exempel
Ange variabler:
- bash: |
NEWSECRET=$(echo $OLDSECRET|base64)
echo "##vso[task.setsecret]$NEWSECRET"
name: SetSecret
env:
OLDSECRET: "SeCrEtVaLuE"
Läs variablerna:
- bash: |
echo "Transformed and derived secrets will be masked: $(echo $OLDSECRET|base64)"
env:
OLDSECRET: "SeCrEtVaLuE"
Konsolutdata:
Transformed and derived secrets will be masked: ***
SetEndpoint: Ändra ett tjänstanslutningsfält
##vso[task.setendpoint]value
Användning
Ange ett tjänstanslutningsfält med angivet värde. Värdet som uppdateras behålls i slutpunkten för efterföljande aktiviteter som körs inom samma jobb.
Egenskaper
id
= tjänstanslutnings-ID (krävs)field
= fälttyp, en avauthParameter
,dataParameter
ellerurl
(krävs)key
= nyckel (krävs, om intefield
=url
)
Exempel
##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: Bifoga en fil till bygget
##vso[task.addattachment]value
Användning
Ladda upp och bifoga den bifogade filen till den aktuella tidslinjeposten. Dessa filer är inte tillgängliga för nedladdning med loggar. Dessa kan endast refereras till av tillägg med hjälp av typ- eller namnvärdena.
Egenskaper
type
= typ av bifogad fil (krävs)name
= namn på bifogad fil (krävs)
Exempel
##vso[task.addattachment type=myattachmenttype;name=myattachmentname;]c:\myattachment.txt
UploadSummary: Lägg till lite Markdown-innehåll i byggsammanfattningen
##vso[task.uploadsummary]local file path
Användning
Ladda upp och bifoga sammanfattning markdown från en .md-fil på lagringsplatsen till den aktuella tidslinjeposten. Den här sammanfattningen ska läggas till i bygg-/versionssammanfattningen och inte vara tillgänglig för nedladdning med loggar. Sammanfattningen ska vara i UTF-8- eller ASCII-format. Sammanfattningen visas på fliken Tillägg i pipelinekörningen. Markdown-rendering på fliken Tillägg skiljer sig från Azure DevOps wiki-rendering.
Exempel
##vso[task.uploadsummary]$(System.DefaultWorkingDirectory)/testsummary.md
Det är ett kort formulär för kommandot
##vso[task.addattachment type=Distributedtask.Core.Summary;name=testsummaryname;]c:\testsummary.md
UploadFile: Ladda upp en fil som kan laddas ned med aktivitetsloggar
##vso[task.uploadfile]local file path
Användning
Ladda upp användarintresserad fil som ytterligare logginformation till den aktuella tidslinjeposten. Filen ska vara tillgänglig för nedladdning tillsammans med uppgiftsloggar.
Exempel
##vso[task.uploadfile]c:\additionalfile.log
PrependPath: Förbered en sökväg till PATH-miljövariabeln
##vso[task.prependpath]local file path
Användning
Uppdatera PATH-miljövariabeln genom att vänta till PATH. Den uppdaterade miljövariabeln återspeglas i efterföljande uppgifter.
Exempel
##vso[task.prependpath]c:\my\directory\path
Artefaktkommandon
Associera: Initiera en artefakt
##vso[artifact.associate]artifact location
Användning
Skapa en länk till en befintlig artefakt. Artefaktplatsen måste vara en filcontainersökväg, VC-sökväg eller UNC-resurssökväg.
Egenskaper
artifactname
= artefaktnamn (krävs)type
= artefakttyp (krävs)container
|filepath
|versioncontrol
|gitref
|tfvclabel
Exempel
Behållare
##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
Anpassad artefakt
##vso[artifact.associate artifactname=myDrop;artifacttype=myartifacttype]https://downloads.visualstudio.com/foo/bar/package.zip
Ladda upp: Ladda upp en artefakt
##vso[artifact.upload]local file path
Användning
Ladda upp en lokal fil till en filcontainermapp och publicera en artefakt som artifactname
.
Egenskaper
containerfolder
= mapp som filen laddas upp till, skapas mappen om det behövs.artifactname
= artefaktnamn. (Krävs)
Exempel
##vso[artifact.upload containerfolder=testresult;artifactname=uploadedresult]c:\testresult.trx
Kommentar
Skillnaden mellan Artifact.associate och Artifact.upload är att den första kan användas för att skapa en länk till en befintlig artefakt, medan den senare kan användas för att ladda upp/publicera en ny artefakt.
Skapa kommandon
UploadLog: Ladda upp en logg
##vso[build.uploadlog]local file path
Användning
Ladda upp användarintresserad logg för att skapa containermappen .logs\tool
Exempel
##vso[build.uploadlog]c:\msbuild.log
UpdateBuildNumber: Åsidosätt det automatiskt genererade versionsnumret
##vso[build.updatebuildnumber]build number
Användning
Du kan automatiskt generera ett versionsnummer från token som du anger i pipelinealternativen. Men om du vill använda din egen logik för att ange versionsnumret kan du använda det här loggningskommandot.
Exempel
##vso[build.updatebuildnumber]my-new-build-number
AddBuildTag: Lägg till en tagg i versionen
##vso[build.addbuildtag]build tag
Användning
Lägg till en tagg för aktuell version. Du kan expandera taggen med en fördefinierad eller användardefinierad variabel. Här läggs till exempel en ny tagg i en Bash-uppgift med värdet last_scanned-$(currentDate)
. Du kan inte använda ett kolon med AddBuildTag.
Exempel
- task: Bash@3
inputs:
targetType: 'inline'
script: |
last_scanned="last_scanned-$(currentDate)"
echo "##vso[build.addbuildtag]$last_scanned"
displayName: 'Apply last scanned tag'
Versionskommandon
UpdateReleaseName: Byt namn på aktuell version
##vso[release.updatereleasename]release name
Användning
Uppdatera versionsnamnet för den version som körs.
Kommentar
Stöds i Azure DevOps och Azure DevOps Server från och med version 2020.
Exempel
##vso[release.updatereleasename]my-new-release-name