Använd variabler i klassiska versionspipelines

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

Att använda variabler i Classic-releasepipelines är ett smidigt sätt att utbyta och överföra data genom hela pipelinen. Varje variabel lagras som en sträng och dess värde kan ändras mellan pipelinekörningar.

Till skillnad från Körningsparametrar, som endast är tillgängliga vid mallparsningstiden, är variabler i klassiska versionspipelines tillgängliga under hela distributionsprocessen.

När du konfigurerar uppgifter för att distribuera ditt program i varje steg i den klassiska versionspipelinen kan variabler hjälpa dig:

  • Förenkla anpassningen: Definiera en allmän distributionspipeline en gång och anpassa den enkelt för olika steg. Använd till exempel en variabel för att representera en webbdistributions anslutningssträng och justera dess värde efter behov för varje steg. Dessa variabler kallas anpassade variabler.

  • Använd sammanhangsbaserad information: Åtkomstinformation om versionskontexten, till exempel en fas, en artefakt eller agenten som kör distributionen. Skripten kan till exempel kräva byggplatsen för nedladdning eller agentens arbetskatalog för att skapa temporära filer. Dessa variabler kallas för standardvariabler.

Kommentar

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

Tips

Du kan använda AI för att hjälpa till med den här uppgiften senare i den här artikeln, eller se Aktivera AI-hjälp med Azure DevOps MCP Server för att komma igång.

Standardvariabler

Standardvariabler ger viktig information om körningskontexten för dina aktiviteter och skript som körs. Dessa variabler ger dig åtkomst till information om systemet, versionen, fasen eller agenten där de körs.

Med undantag för System.Debug är standardvariabler skrivskyddade och systemet anger automatiskt sina värden.

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.

Systemvariabler

Variabelnamn beskrivning
System.TeamFoundationServerUri URL:en för tjänstanslutningen i Azure-pipelines. Använd den här variabeln i 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 den här variabeln i dina skript eller uppgifter för att anropa REST-API:er på andra tjänster som build- och versionskontroll.

Exempel: https://dev.azure.com/fabrikam/
System.CollectionId ID för den samling som den här builden eller utgåvan tillhör.

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

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

Exempel: Fabrikam
System.TeamProjectId ID för projektet som denna build eller release tillhör.

Exempel: 79f5c12e-3337-4151-be41-a268d2c73344
System.ArtifactsDirectory Katalogen som pipelinen laddar ned artefakter till under distributionen av en version. Pipeline rensar katalogen före varje distribution, om den kräver att artefakter laddas ned till agenten. Samma som Agent.ReleaseDirectory och System.DefaultWorkingDirectory.

Exempel: C:\agent\_work\r1\a
System.DefaultWorkingDirectory Katalogen som pipelinen laddar ned artefakter till under distributionen av en version. Pipeline rensar katalogen före varje distribution, om den kräver 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 pipelinen skapar undermappar för varje kompilering eller leverans. Samma som Agent.RootDirectory och Agent.WorkFolder.

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

Exempel: true

Versionsvariabler

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

Exempel: 1
Release.DefinitionEnvironmentId ID för steget i den motsvarande releasepipelinen.

Exempel: 1
Release.DefinitionId ID för den lanseringspipeline som den aktuella lanseringen 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 identiteten som utlöste (startade) distributionen som för närvarande pågår.

Exempel: Mateo Escobedo
Release.Deployment.RequestedForEmail E-postadressen för den identitet som utlöste (startade) den driftsättning som för närvarande pågår.

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

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

Exempel: 254
Release.DeployPhaseID ID:t för den fas där driftsättningen pågår.

Exempel: 127
Release.EnvironmentId ID för steginstansen i en release där distributionen för närvarande pågår.

Exempel: 276
Release.EnvironmentName Namnet på det steg där driftsättningen för närvarande pågår.

Exempel: Dev
Release.EnvironmentUri URI för instansen för fasen i en release dit en distribution för närvarande pågår.

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 – releasen startade i kontinuerlig driftsättning efter att en build slutförts.
Manual – utgåvan startades manuellt.
None – distributionsorsaken har inte angetts.
Schedule – utgåvan startades enligt ett schema.
Release.ReleaseDescription Textbeskrivningen som tillhandahölls vid tidpunkten för lanseringen.

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

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 den identitet som utlöste releasen.

Exempel: Mateo Escobedo
E-post för begärd release E-postadressen till den identitet som utlöste releasen.

Exempel: mateo@fabrikam.com
Release.RequestedForId ID:t för den identitet 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.

Exempel: FALSE
Release.TriggeringArtifact.Alias Aliaset för artefakten som utlöste utgåvan. Det här värdet är tomt när versionen schemaläggs eller initieras manuellt.

Exempel: fabrikam\_app

Variabler för releasefas

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

Exempel: NotStarted

Agentvariabler

Variabelnamn beskrivning
Agent.Name Namnet på agenten som registrerats i agentpoolen. Det här namnet skiljer sig troligen 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å jobbet 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 distributionen av en version laddar ned artefakter till. Katalogen rensas före varje distribution om det krävs att artefakter laddas ned till agenten. Det är samma som System.ArtifactsDirectory och System.DefaultWorkingDirectory.

Exempel: C:\agent\_work\r1\a
Agent.RootDirectory Arbetskatalogen för den här agenten, i vilken undermappar skapas för varje build eller release. Det är samma som Agent.WorkFolder och System.WorkFolder.

Exempel: C:\agent\_work
Agent.WorkFolder Arbetskatalogen för den här agenten, i vilken undermappar skapas för varje build eller release. Det är samma som Agent.RootDirectory och System.WorkFolder.

Exempel: C:\agent\_work
Agent.DeploymentGroupId ID för distributionsgruppen som agenten registrerar sig med. Det här ID:t är endast tillgängligt i distributionsgruppjobb.

Exempel: 1

Releaseartefaktvariabler

Använd följande artefaktvariabler för varje artefakt som du refererar till i en version. Observera att inte alla variabler gäller för varje artefakttyp. I följande tabell visas standardartefaktvariabler och exempel på deras värden baserat på artefakttypen. Om ett exempel är tomt anger det att variabeln inte är tillämplig för den artefakttypen.

{alias} Ersätt platshållaren med det värde som du anger för artefaktkällans alias eller med standardvärdet som genereras för versionspipelinen.

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

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

Azure-pipelines: fabrikam-ci
TFVC: $/fabrikam
Git: fabrikam
Github: fabrikam/asp (main)
Release.Artifacts. {alias}. BuildNumber Byggnumret eller commitidentifieraren. Exempel:

Azure-pipelines: 20170112.1
Jenkins: 20170112.1
TFVC: Changeset 3
Git: 38629c964
Github: 38629c964
Release.Artifacts.{alias}.BuildId Byggidentifieraren. Exempel:

Azure-pipelines: 130
Jenkins: 130
Github: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts.{alias}.BuildURI URL:en för bygget. Exempel:

Azure-pipelines: vstfs://build-release/Build/130
Github: 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:

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

Azure-pipelines: main
Release.Artifacts.{alias}.SourceVersion Incheckningen som skapades. Exempel:

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

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

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

Azure-pipelines: Mateo Escobedo
Release.Artifacts.{alias}.Typ Typ av artefaktkälla, till exempel Build. Examples:

Azure-pipelines: Build
Jenkins: Jenkins
Azure DevOps Services:TFVC
Git: Git
Github: GitHub
Release.Artifacts. {alias}. PullRequest.TargetBranch Den fullständiga sökvägen och namnet på den gren som en pull request riktas mot. Den här variabeln initieras endast om versionen utlöses av ett pull-begärandeflöde. Exempel:

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

Azure-pipelines: main

Primära artefaktvariabler

Om du använder flera artefakter i klassiska versionspipelines kan du ange en artefakt som den primära artefakten. Azure-pipelines fyller sedan i följande variabler för den avsedda primära artefakten.

Variabelnamn Samma som
Build.DefinitionId Release.Artifacts.{Alias för primär artefakt}.DefinitionId
Build.DefinitionName Release.Artifacts. {Primärt artefaktalias}. DefinitionName
Build.BuildNumber Release.Artifacts. {Primärt artefaktalias}. BuildNumber
Build.BuildId Release.Artifacts.{Primärt artefaktsalias}.BuildId
Build.BuildURI Release.Artifacts. {Primärt artefaktalias}. BuildURI
Build.SourceBranch Release.Artifacts. {Primärt artefaktalias}. SourceBranch
Build.SourceBranchName Release.Artifacts.{Alias för primär artefakt}.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.

Använd en standardvariabel direkt som indata till en aktivitet. Om du till exempel vill skicka Release.Artifacts.{Artifact alias}.DefinitionName som ett argument till en PowerShell-uppgift för en artefakt med ASPNET4.CI som alias använder du $(Release.Artifacts.ASPNET4.CI.DefinitionName).

En skärmbild som visar hur du använder en standardvariabel som argument.

Om du vill använda en standardvariabel i skriptet ersätter du . i standardvariabelnamnen med _. Om du till exempel vill skriva ut värdet Release.Artifacts.{Artifact alias}.DefinitionName för för en artefakt med ASPNET4.CI som alias i ett PowerShell-skript använder du $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME. Det ursprungliga aliaset , ASPNET4.CI, ersätts med ASPNET4_CI.

En skärmbild som visar hur du använder en standardvariabel i ett infogat PowerShell-skript.

Anpassade variabler

Du kan definiera anpassade variabler i olika omfång.

  • Variabelgrupper: Använd variabelgrupper för att dela värden i alla definitioner i ett projekt. Den här metoden är användbar när du vill använda samma värden i definitioner, steg och aktiviteter i ett projekt och hantera dem från en enda plats. Definiera och hantera variabelgrupper i pipelinebiblioteket>.

  • Versionspipelinevariabler: Använd versionspipelinevariabler för att dela värden i alla steg i en versionspipeline. Den här metoden är idealisk för scenarier där du behöver ett konsekvent värde mellan steg och uppgifter, med möjlighet att uppdatera den från en enda plats. Definiera och hantera dessa variabler på fliken Variabler i versionspipelinen. På sidan Pipeline Variables ställer du in listrutan ScopeRelease när du lägger till en variabel.

  • Stegvariabler: Använd stegvariabler för att dela värden inom ett visst steg i en releasepipeline. Den här metoden är användbar för värden som skiljer sig från steg till steg men som är konsekventa för alla aktiviteter i en fas. Definiera och hantera dessa variabler på fliken Variabler i versionspipelinen. På sidan Pipelinevariabler ställer du in listrutan Omfång på rätt miljö när du lägger till en variabel.

Genom att använda anpassade variabler i projektet, versionspipelinen och stegnivåerna kan du:

  • Undvik att duplicera värden, vilket gör det enklare att uppdatera alla förekomster med en enda ändring.

  • Skydda känsliga värden genom att förhindra att de visas eller ändras av användare. Om du vill markera en variabel som säker (hemlighet) väljer du ikonen bredvid variabeln.

    Viktigt!

    Värdena för de dolda variablerna (hemligheten) lagras på ett säkert sätt på servern och användarna kan inte visa dem när de har sparats. Under distributionen dekrypterar Azure-pipelines dessa värden när uppgifter refererar till dem och skickar dem till agenten via en säker HTTPS-kanal.

Kommentar

Om du skapar anpassade variabler kan du skriva över standardvariabler. Om du till exempel definierar en anpassad sökvägsvariabel på en Windows-agent skriver den över variabeln $env:Path och kan förhindra att PowerShell körs korrekt.

Använda anpassade variabler

Om du vill använda anpassade variabler i dina aktiviteter omger du variabelnamnet inom parenteser och föregår det med ett $ tecken. Om du till exempel har en variabel med namnet adminUserName infogar du dess aktuella värde i en aktivitet som $(adminUserName).

Kommentar

Variabler från olika grupper som är länkade till en pipeline med samma omfång (till exempel jobb eller fas) kan stå i konflikt och leda till oförutsägbara resultat. Undvik det här problemet genom att se till att variabler i alla dina variabelgrupper har unika namn.

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 . Det uppdaterade variabelvärdet är begränsat till det jobb som körs och bevaras inte mellan jobb eller faser. Observera att variabelnamn omvandlas till versaler, med "." och " " ersatta med "_".

Till exempel kommer Agent.WorkFolder att bli AGENT_WORKFOLDER.

  • I Windows får du åtkomst till den här variabeln som %AGENT_WORKFOLDER% eller $env:AGENT_WORKFOLDER.
  • I Linux och macOS använder du $AGENT_WORKFOLDER.

Tips

Du kan köra ett skript på:

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)

Visa aktuella värden för alla variabler

  1. Välj Pipelines>Versioner och välj sedan din versionspipeline.

  2. Öppna sammanfattningsvyn för din version och välj den fas som du är intresserad av. I listan med steg väljer du Initiera jobb.

    En skärmbild som visar jobbinitieringssteget.

  3. Det här steget öppnar loggarna. Rulla nedåt för att se de värden som agenten använder för det här jobbet.

    En skärmbild som visar variablerna som används av agenten.

Kör en version i felsökningsläge

Om du kör en version i felsökningsläge kan du diagnostisera och lösa problem genom att visa extra information under versionskörningen. Du kan aktivera felsökningsläget för hela versionen eller bara för uppgifterna i en specifik versionsfas.

  • Om du vill aktivera System.Debug för hela versionen lägger du till en variabel med namnet true med värdet på fliken Variabler i versionspipelinen.

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

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

Tips

Om du stöter på ett fel som rör Azure Resource Manager-tjänstanslutningar läser du Så här felsöker du Azure Resource Manager-tjänstanslutningar för mer information.

Använda AI för att utforma, validera och felsöka versionsvariabler

Följande exempelprompter för Copilot Chat hjälper dig att förstå variabelomfång och företräde, utforma en lättunderhållen variabelstrategi, validera nuvarande användning och felsöka problem med variabelupplösning vid behov. Kopiera och klistra in dessa uppmaningar i Copilot Chat och ersätt platshållarna med dina scen-, aktivitets- och variabelnamn.

Task Exempelprompt
Förklara variabelprioritet Explain how variable precedence works in this Classic release pipeline across variable groups, release scope, and stage scope, using my variable names as examples.
Utforma en variabelstrategi Propose a naming and scoping convention for Classic release variables in this pipeline so values are clear, reusable, and less likely to conflict.
Diagnostisera överlappande områden In my Classic release pipeline, explain scope overlap for variable <VariableName> and tell me which value wins between release scope and stage scope.
Validera mappning av skriptvariabler Convert these Classic release variable references to the correct script environment variable names and explain why each one works.
Granska konflikter i variabelgrupper Identify potential naming conflicts across linked variable groups and stage variables in this Classic release pipeline, and recommend safer names.
Det går inte att hitta felsök variabeln Help me troubleshoot this Classic release pipeline error: variable not found for <VariableName>. Check macro syntax, scope, and task context.
Felsöka typoscenariot "varialbe hittades inte" I see a "varialbe not found" error in a deployment script. Help me determine whether this is a misspelled variable name, wrong scope, or incorrect environment variable mapping.

Copilot drivs av AI, så överraskningar och misstag är möjliga. För mer information, se Vanliga frågor om allmänt bruk av Copilot.