Variabler för klassisk version och artefakter

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

Klassiska versions- och artefaktervariabler är ett bekvämt sätt att utbyta och transportera data i hela pipelinen. Varje variabel lagras som en sträng och dess värde kan ändras mellan olika pipelinekörningar.

Variabler skiljer sig från Körningsparametrar som endast är tillgängliga vid mallparsningstid.

När du skapar uppgifter för att distribuera ditt program i varje fas i dina DevOps CI/CD-processer hjälper variabler dig att:

  • Definiera en mer allmän distributionspipeline en gång och anpassa den sedan enkelt för varje steg. En variabel kan till exempel användas för att representera anslutningssträng för webbdistribution och värdet för den här variabeln kan ändras från en fas till en annan. Det här är anpassade variabler.

  • Använd information om kontexten för den specifika versionen, fasen, artefakter eller agenten där distributionspipelinen körs. Skriptet kan till exempel behöva åtkomst till platsen för bygget för att ladda ned det eller till arbetskatalogen på agenten för att skapa temporära filer. Det här är standardvariabler.

Kommentar

Mer information finns i användardefinierade variabler och fördefinierade variabler för YAML-pipelines.

Standardvariabler

Information om körningskontexten görs tillgänglig för aktiviteter som körs via standardvariabler. Dina uppgifter och skript kan använda dessa variabler för att hitta information om systemet, versionen, fasen eller agenten som de kör i. Med undantag för System.Debug är dessa variabler skrivskyddade och deras värden anges automatiskt av systemet. Några av de viktigaste variablerna beskrivs i följande tabeller. Om du vill visa den fullständiga listan kan du läsa Visa aktuella värden för alla variabler.

Dricks

Du kan visa aktuella värden för alla variabler för en version och använda en standardvariabel för att köra en version i felsökningsläge.

System

Variabelnamn beskrivning
System.TeamFoundationServerUri URL:en för tjänstanslutningen i Azure Pipelines. Använd detta från dina skript eller aktiviteter för att anropa REST-API:er för Azure Pipelines.

Exempel: https://fabrikam.vsrm.visualstudio.com/
System.TeamFoundationCollectionUri URL:en för Team Foundation-samlingen eller Azure Pipelines. Använd detta från dina skript eller uppgifter för att anropa REST-API:er på andra tjänster, till exempel versionskontroll och versionskontroll.

Exempel: https://dev.azure.com/fabrikam/
System.CollectionId ID:t för samlingen som den här versionen eller versionen tillhör.

Exempel: 6c6f3423-1c84-4625-995a-f7f143a1e43d
System.DefinitionId ID:t för versionspipelinen som den aktuella versionen tillhör.

Exempel: 1
System.TeamProject Namnet på det projekt som den här versionen eller versionen tillhör.

Exempel: Fabrikam
System.TeamProjectId ID:t för projektet som den här versionen eller versionen tillhör.

Exempel: 79f5c12e-3337-4151-be41-a268d2c73344
System.ArtifactsDirectory Katalogen som artefakter laddas ned till under distributionen av en version. Katalogen rensas före varje distribution om det krävs att artefakter laddas ned till agenten. Samma som Agent.ReleaseDirectory och System.DefaultWorkingDirectory.

Exempel: C:\agent\_work\r1\a
System.DefaultWorkingDirectory Katalogen som artefakter laddas ned till under distributionen av en version. Katalogen rensas före varje distribution om det krävs att artefakter laddas ned till agenten. Samma som Agent.ReleaseDirectory och System.ArtifactsDirectory.

Exempel: C:\agent\_work\r1\a
System.WorkFolder Arbetskatalogen för den här agenten, där undermappar skapas för varje version eller version. Samma som Agent.RootDirectory och Agent.WorkFolder.

Exempel: C:\agent\_work
System.Debug Det här är den enda systemvariabeln som kan anges av användarna. Ställ in på true för att köra versionen i felsökningsläge för att hjälpa till med felsökning.

Exempel: true

Frisläpp

Variabelnamn beskrivning
Release.AttemptNumber Antalet gånger den här versionen distribueras i det här steget.

Exempel: 1
Release.DefinitionEnvironmentId ID:t för fasen i motsvarande versionspipeline.

Exempel: 1
Release.DefinitionId ID:t för versionspipelinen som den aktuella versionen tillhör.

Exempel: 1
Release.DefinitionName Namnet på den versionspipeline som den aktuella versionen tillhör.

Exempel: fabrikam-cd
Release.Deployment.RequestedFor Visningsnamnet för den identitet som utlöste (startade) distributionen som pågår.

Exempel: Mateo Escobedo
Release.Deployment.RequestedForEmail E-postadressen till den identitet som utlöste (startade) distributionen som pågår.

Exempel: mateo@fabrikam.com
Release.Deployment.RequestedForId ID för den identitet som utlöste (startade) distributionen som pågår.

Exempel: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.DeploymentID ID:t för distributionen. Unikt per jobb.

Exempel: 254
Release.DeployPhaseID ID för fasen där distributionen körs.

Exempel: 127
Release.EnvironmentId ID:t för fasinstansen i en version som distributionen pågår till.

Exempel: 276
Release.EnvironmentName Namnet på den fas som distributionen pågår till.

Exempel: Dev
Release.EnvironmentUri URI:n för fasinstansen i en version som distributionen pågår till.

Exempel: vstfs://ReleaseManagement/Environment/276
Release.Environments. {stage-name}.status Distributionsstatus för fasen.

Exempel: InProgress
Release.PrimaryArtifactSourceAlias Aliaset för den primära artefaktkällan

Exempel: fabrikam\_web
Release.Reason Orsaken till distributionen. Värden som stöds är:
ContinuousIntegration – versionen startades i Kontinuerlig distribution efter att en version har slutförts.
Manual – versionen startade manuellt.
None – distributionsorsaken har inte angetts.
Schedule – versionen startade från ett schema.
Release.ReleaseDescription Textbeskrivningen som angavs vid tidpunkten för versionen.

Exempel: Critical security patch
Release.ReleaseId Identifieraren för den aktuella versionsposten.

Exempel: 118
Release.ReleaseName Namnet på den aktuella versionen.

Exempel: Release-47
Release.ReleaseUri URI:n för den aktuella versionen.

Exempel: vstfs://ReleaseManagement/Release/118
Release.ReleaseWebURL URL:en för den här versionen.

Exempel: https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary
Release.RequestedFor Visningsnamnet för identiteten som utlöste versionen.

Exempel: Mateo Escobedo
Release.RequestedForEmail E-postadressen för den identitet som utlöste versionen.

Exempel: mateo@fabrikam.com
Release.RequestedForId Identitets-ID:t som utlöste versionen.

Exempel: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.SkipArtifactsDownload Booleskt värde som anger om du vill hoppa över nedladdning av artefakter till agenten eller inte.

Exempel: FALSE
Release.TriggeringArtifact.Alias Aliaset för artefakten som utlöste versionen. Detta är tomt när versionen schemalades eller utlöstes manuellt.

Exempel: fabrikam\_app

Versionssteg

Variabelnamn beskrivning
Release.Environments. {stage name}. Status Status för distributionen av den här versionen inom en angiven fas.

Exempel: NotStarted

Handläggare

Variabelnamn beskrivning
Agent.Name Namnet på agenten som registrerats med agentpoolen. Detta kommer sannolikt att skilja sig från datornamnet.

Exempel: fabrikam-agent
Agent.MachineName Namnet på den dator där agenten är konfigurerad.

Exempel: fabrikam-agent
Agent.Version Versionen av agentprogramvaran.

Exempel: 2.109.1
Agent.JobName Namnet på det jobb som körs, till exempel Release eller Build.

Exempel: Release
Agent.HomeDirectory Mappen där agenten är installerad. Den här mappen innehåller koden och resurserna för agenten.

Exempel: C:\agent
Agent.ReleaseDirectory Katalogen som artefakter laddas ned till under distributionen av en version. Katalogen rensas före varje distribution om det krävs att artefakter laddas ned till agenten. Samma som System.ArtifactsDirectory och System.DefaultWorkingDirectory.

Exempel: C:\agent\_work\r1\a
Agent.RootDirectory Arbetskatalogen för den här agenten, där undermappar skapas för varje version eller version. Samma som Agent.WorkFolder och System.WorkFolder.

Exempel: C:\agent\_work
Agent.WorkFolder Arbetskatalogen för den här agenten, där undermappar skapas för varje version eller version. Samma som Agent.RootDirectory och System.WorkFolder.

Exempel: C:\agent\_work
Agent.DeploymentGroupId ID:t för distributionsgruppen som agenten är registrerad med. Detta är endast tillgängligt i distributionsgruppsjobb.

Exempel: 1

Allmän artefakt

För varje artefakt som refereras till i en version kan du använda följande artefaktvariabler. Alla variabler är inte meningsfulla för varje artefakttyp. Tabellen nedan visar standardartefaktvariabler och innehåller exempel på de värden som de har beroende på artefakttyp. Om ett exempel är tomt innebär det att variabeln inte är ifylld för den artefakttypen.

{alias} Ersätt platshållaren med det värde som du angav för artefaktaliaset eller med standardvärdet som genererats för versionspipelinen.

Variabelnamn beskrivning
Release.Artifacts. {alias}. DefinitionId Identifieraren för bygg-pipelinen eller lagringsplatsen.

Exempel på Azure Pipelines: 1
GitHub-exempel: fabrikam/asp
Release.Artifacts. {alias}. DefinitionName Namnet på bygg-pipelinen eller lagringsplatsen.

Exempel på Azure Pipelines: fabrikam-ci
TFVC-exempel: $/fabrikam
Git-exempel: fabrikam
GitHub-exempel: fabrikam/asp (main)
Release.Artifacts. {alias}. BuildNumber Versionsnumret eller incheckningsidentifieraren.

Exempel på Azure Pipelines: 20170112.1
Jenkins/TeamCity-exempel: 20170112.1
TFVC-exempel: Changeset 3
Git-exempel: 38629c964
GitHub-exempel: 38629c964
Release.Artifacts. {alias}. BuildId Byggidentifieraren.

Exempel på Azure Pipelines: 130
Jenkins/TeamCity-exempel: 130
GitHub-exempel: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts. {alias}. BuildURI URL:en för bygget.

Exempel på Azure Pipelines: vstfs://build-release/Build/130
GitHub-exempel: https://github.com/fabrikam/asp
Release.Artifacts. {alias}. SourceBranch Den fullständiga sökvägen och namnet på grenen som källan skapades från.

Exempel på Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. SourceBranchName Endast namnet på grenen som källan skapades från.

Exempel på Azure Pipelines: main
Release.Artifacts. {alias}. SourceVersion Incheckningen som skapades.

Exempel på Azure Pipelines: bc0044458ba1d9298cdc649cb5dcf013180706f7
Release.Artifacts. {alias}. Repository.Provider Den typ av lagringsplats som källan skapades från.

Exempel på Azure Pipelines: Git
Release.Artifacts. {alias}. RequestedForID Identifieraren för det konto som utlöste bygget.

Exempel på Azure Pipelines: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.Artifacts. {alias}. RequestedFor Namnet på det konto som begärde bygget.

Exempel på Azure Pipelines: Mateo Escobedo
Release.Artifacts. {alias}. Typ Typ av artefaktkälla, till exempel Build.

Exempel på Azure Pipelines: Build
Jenkins-exempel: Jenkins
TeamCity-exempel: TeamCity
TFVC-exempel: TFVC
Git-exempel: Git
GitHub-exempel: GitHub
Release.Artifacts. {alias}. PullRequest.TargetBranch Den fullständiga sökvägen och namnet på den gren som är målet för en pull-begäran. Den här variabeln initieras endast om versionen utlöses av ett pull-begärandeflöde.

Exempel på Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. PullRequest.TargetBranchName Endast namnet på den gren som är målet för en pull-begäran. Den här variabeln initieras endast om versionen utlöses av ett pull-begärandeflöde.

Exempel på Azure Pipelines: main

Se även Artefaktkällaalias

Primär artefakt

Du anger en av artefakterna som en primär artefakt i en versionspipeline. För den avsedda primära artefakten fyller Azure Pipelines i följande variabler.

Variabelnamn Samma som
Build.DefinitionId Release.Artifacts. {Primärt artefaktalias}. DefinitionId
Build.DefinitionName Release.Artifacts. {Primärt artefaktalias}. DefinitionName
Build.BuildNumber Release.Artifacts. {Primärt artefaktalias}. BuildNumber
Build.BuildId Release.Artifacts. {Primärt artefaktalias}. BuildId
Build.BuildURI Release.Artifacts. {Primärt artefaktalias}. BuildURI
Build.SourceBranch Release.Artifacts. {Primärt artefaktalias}. SourceBranch
Build.SourceBranchName Release.Artifacts. {Primärt artefaktalias}. SourceBranchName
Build.SourceVersion Release.Artifacts. {Primärt artefaktalias}. SourceVersion
Build.Repository.Provider Release.Artifacts. {Primärt artefaktalias}. Repository.Provider
Build.RequestedForID Release.Artifacts. {Primärt artefaktalias}. RequestedForID
Build.RequestedFor Release.Artifacts. {Primärt artefaktalias}. RequestedFor
Build.Type Release.Artifacts. {Primärt artefaktalias}. Typ
Build.PullRequest.TargetBranch Release.Artifacts. {Primärt artefaktalias}. PullRequest.TargetBranch
Build.PullRequest.TargetBranchName Release.Artifacts. {Primärt artefaktalias}. PullRequest.TargetBranchName

Använda standardvariabler

Du kan använda standardvariablerna på två sätt – som parametrar för uppgifter i en versionspipeline eller i skripten.

Du kan använda en standardvariabel direkt som indata till en aktivitet. Om du till exempel vill skicka Release.Artifacts.{Artifact alias}.DefinitionName för artefaktkällan vars alias är ASPNET4.CI till en uppgift använder $(Release.Artifacts.ASPNET4.CI.DefinitionName)du .

Använda artefaktvariabler i argument till en PowerShell-skriptuppgift

Om du vill använda en standardvariabel i skriptet måste du först ersätta . i standardvariabelnamnen med _. Om du till exempel vill skriva ut värdet för artefaktvariabeln Release.Artifacts.{Artifact alias}.DefinitionName för artefaktkällan vars alias är ASPNET4.CI i ett PowerShell-skript använder $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAMEdu .

Använda artefaktvariabler i ett infogat PowerShell-skript

Observera att det ursprungliga namnet på artefaktkällans alias, ASPNET4.CI, ersätts med ASPNET4_CI.

Visa aktuella värden för alla variabler

  1. Öppna pipelinevyn för sammanfattningen för versionen och välj den fas som du är intresserad av. I listan med steg väljer du Initiera jobb.

    Öppna loggen för en version

  2. Då öppnas loggen för det här steget. Rulla nedåt för att se de värden som används av agenten för det här jobbet.

    Visa värdena för variablerna i en version

Kör en version i felsökningsläge

Visa ytterligare information när en version körs och i loggfilerna genom att köra hela versionen, eller bara uppgifterna i en enskild versionsfas, i felsökningsläge. Detta kan hjälpa dig att lösa problem och fel.

  • Om du vill initiera felsökningsläget för en hel version lägger du till en variabel med namnet System.Debug med värdet true på fliken Variabler i en versionspipeline.

  • Om du vill initiera felsökningsläget för en enskild fas öppnar du dialogrutan Konfigurera fas från snabbmenyn i fasen och lägger till en variabel med namnet System.Debug med värdet truefliken Variabler .

  • Du kan också skapa en variabelgrupp som innehåller en variabel med namnet System.Debug med värdet true och länka den här variabelgruppen till en versionspipeline.

Dricks

Om du får ett fel som rör en Azure RM-tjänstanslutning läser du Så här felsöker du Azure Resource Manager-tjänstanslutningar.

Anpassade variabler

Anpassade variabler kan definieras i olika omfång.

  • Dela värden i alla definitioner i ett projekt med hjälp av variabelgrupper. Välj en variabelgrupp när du behöver använda samma värden i alla definitioner, faser och aktiviteter i ett projekt, och du vill kunna ändra värdena på en enda plats. Du definierar och hanterar variabelgrupper på fliken Bibliotek .

  • Dela värden i alla steg med hjälp av versionspipelinevariabler. Välj en versionspipelinevariabel när du behöver använda samma värde i alla faser och aktiviteter i versionspipelinen, och du vill kunna ändra värdet på en enda plats. Du definierar och hanterar dessa variabler på fliken Variabler i en versionspipeline. På sidan Pipelinevariabler öppnar du listrutan Omfång och väljer "Release". När du lägger till en variabel är den som standard inställd på Versionsomfång.

  • Dela värden mellan alla aktiviteter inom en specifik fas med hjälp av scenvariabler. Använd en variabel på stegnivå för värden som varierar från steg till steg (och som är desamma för alla aktiviteter i en fas). Du definierar och hanterar dessa variabler på fliken Variabler i en versionspipeline. På sidan Pipelinevariabler öppnar du listrutan Omfång och väljer den fas som krävs. När du lägger till en variabel anger du omfånget till lämplig miljö.

Med anpassade variabler i projekt, versionspipeline och fasomfång kan du:

  • Undvik duplicering av värden, vilket gör det enklare att uppdatera alla förekomster som en åtgärd.

  • Lagra känsliga värden på ett sätt som inte kan visas eller ändras av användare av versionspipelines. Ange en konfigurationsegenskap som en säker (hemlig) variabel genom att Hänglås välja ikonen (hänglås) bredvid variabeln.

    Viktigt!

    Värdena för de dolda variablerna (hemliga) lagras på ett säkert sätt på servern och kan inte visas av användarna när de har sparats. Under en distribution dekrypterar Azure Pipelines-versionstjänsten dessa värden när de refereras av uppgifterna och skickar dem till agenten via en säker HTTPS-kanal.

Kommentar

Om du skapar anpassade variabler kan du skriva över standardvariabler. Till exempel miljövariabeln PowerShell Path . Om du skapar en anpassad Path variabel på en Windows-agent skrivs variabeln $env:Path över och PowerShell kan inte köras.

Använda anpassade variabler

Om du vill använda anpassade variabler i dina bygg- och versionsaktiviteter omger du bara variabelnamnet inom parenteser och föregår det med ett $ tecken. Om du till exempel har en variabel med namnet adminUserName kan du infoga det aktuella värdet för variabeln i en parameter för en aktivitet som $(adminUserName).

Kommentar

Variabler i olika grupper som är länkade till en pipeline i samma omfång (till exempel jobb eller fas) kolliderar och resultatet kan vara oförutsägbart. Se till att du använder olika namn för variabler i alla dina variabelgrupper.

Definiera och ändra variabler i ett skript

Om du vill definiera eller ändra en variabel från ett skript använder du loggningskommandot task.setvariable . Observera att det uppdaterade variabelvärdet är begränsat till det jobb som körs och inte flödar över jobb eller faser. Variabelnamn omvandlas till versaler och tecknen "." och " " ersätts av "_".

Till exempel kommer Agent.WorkFolder att bli AGENT_WORKFOLDER. I Windows får du åtkomst till detta som %AGENT_WORKFOLDER% eller $env:AGENT_WORKFOLDER. I Linux och macOS använder $AGENT_WORKFOLDERdu .

Dricks

Du kan köra ett skript på en:

Batch-skript

Ange variablerna sauce och secret.Sauce

@echo ##vso[task.setvariable variable=sauce]crushed tomatoes
@echo ##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic

Läs variablerna

Argument

"$(sauce)" "$(secret.Sauce)"

Skript

@echo off
set sauceArgument=%~1
set secretSauceArgument=%~2
@echo No problem reading %sauceArgument% or %SAUCE%
@echo But I cannot read %SECRET_SAUCE%
@echo But I can read %secretSauceArgument% (but the log is redacted so I do not spoil
     the secret)

Konsolutdata från att läsa variablerna:

No problem reading crushed tomatoes or crushed tomatoes
But I cannot read 
But I can read ******** (but the log is redacted so I do not spoil the secret)