Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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: 1Github: fabrikam/asp |
| Release.Artifacts. {alias}. DefinitionName | Namnet på bygg-pipelinen eller lagringsplatsen. Exempel: Azure-pipelines: fabrikam-ciTFVC: $/fabrikamGit: fabrikamGithub: fabrikam/asp (main) |
| Release.Artifacts. {alias}. BuildNumber | Byggnumret eller commitidentifieraren. Exempel: Azure-pipelines: 20170112.1Jenkins: 20170112.1TFVC: Changeset 3Git: 38629c964Github: 38629c964 |
| Release.Artifacts.{alias}.BuildId | Byggidentifieraren. Exempel: Azure-pipelines: 130Jenkins: 130Github: 38629c964d21fe405ef830b7d0220966b82c9e11 |
| Release.Artifacts.{alias}.BuildURI | URL:en för bygget. Exempel: Azure-pipelines: vstfs://build-release/Build/130Github: 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: BuildJenkins: JenkinsAzure DevOps Services: TFVCGit: GitGithub: 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).
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.
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 Scope på Release 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å:
- En Windows-agent som antingen använder en Batch-skriptaktivitet eller En PowerShell-uppgift.
- En macOS - eller Linux-agent med hjälp av en Shell-skriptuppgift.
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
Välj Pipelines>Versioner och välj sedan din versionspipeline.
Ö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.
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.
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.Debugför hela versionen lägger du till en variabel med namnettruemed 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.Debugmed värdettruepå fliken Variabler .Du kan också skapa en variabelgrupp som innehåller en variabel med namnet
System.Debugmed värdettrueoch 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.
Ange variablerna
Ange variablerna