Använda variabler i klassiska versionspipelines
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Att använda variabler i klassiska versionspipelines ä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 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 niska veze och justera dess värde efter behov för varje steg. Dessa 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 kallas för standardvariabler.
Kommentar
Mer information finns i användardefinierade variabler och fördefinierade variabler för YAML-pipelines.
Standardvariabler
Standardvariabler ger viktig information om körningskontexten för dina aktiviteter och skript som körs. Med de här variablerna kan du komma åt information om systemet, versionen, fasen eller agenten där de körs.
Med undantag för System.Debug är standardvariabler 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.
Systemvariabler
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 |
Versionsvariabler
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 den identitet 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 | 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 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 |
Versionsstegsvariabler
Variabelnamn | beskrivning |
---|---|
Release.Environments. {stage name}. Status | Status för distributionen av den här versionen inom en angiven fas. Exempel: NotStarted |
Agentvariabler
Versionsartefaktvariabler
För varje artefakt som refereras till i en version kan du använda följande artefaktvariabler. Observera att inte alla variabler gäller för varje artefakttyp. Tabellen nedan visar standardartefaktvariabler och innehåller 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 angav för artefaktkällans alias eller med standardvärdet som genererats 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 | Versionsnumret eller incheckningsidentifieraren. 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 | Typen av artefaktkälla, till exempel Build.Examples Azure Pipelines: Build Jenkins: Jenkins TFVC: TFVC Git: Git GitHub: 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: 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: Azure Pipelines: main |
Primära artefaktvariabler
Om du använder flera artefakter i klassiska versionspipelines kan du ange en 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. {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 uppgift. 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 $(Release.Artifacts.ASPNET4.CI.DefinitionName)
du .
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 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
. Observera att det ursprungliga aliaset, ASPNET4.CI, ersätts med ASPNET4_CI.
Anpassade variabler
Anpassade variabler kan definieras i olika omfång.
Variabelgrupper: Använd variabelgrupper för att dela värden i alla definitioner i ett projekt. Detta är användbart när du vill använda samma värden i definitioner, faser 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. Detta är idealiskt för scenarier där du behöver ett konsekvent värde mellan faser och uppgifter, med möjlighet att uppdatera det från en enda plats. Definiera och hantera dessa variabler på fliken Variabler i versionspipelinen. På sidan Pipelinevariabler anger du listrutan Omfång till Släpp när du lägger till en variabel.
Stegvariabler: Använd stegvariabler för att dela värden inom en specifik fas i en versionspipeline. Detta är användbart för värden som skiljer sig från steg till steg men är konsekventa för alla aktiviteter i en fas. Definiera och hantera dessa variabler på fliken Variabler i versionspipelinen. På sidan Pipelinevariabler anger du listrutan Omfång till lämplig miljö när du lägger till en variabel.
Med hjälp av 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 säkert på servern och kan inte visas av användarna när de har sparats. Under distributionen dekrypterar Azure Pipelines dessa värden när de refereras av uppgifter 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 för en Windows-agent skrivs variabeln $env:Path över, vilket 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 kan du infoga 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 (t.ex. jobb eller fas) kan vara i konflikt, vilket leder till oförutsägbara resultat. Undvik detta 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
.
Dricks
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.
Då öppnas loggarna 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.
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 eller fel genom att visa ytterligare information under versionskörningen. Du kan aktivera felsökningsläge för hela versionen eller bara för aktiviteterna i en specifik versionsfas.
Om du vill aktivera felsökningsläge för en hel version lägger du till en variabel med namnet
System.Debug
med värdettrue
på fliken Variabler i versionspipelinen.Om du vill aktivera felsökningsläge 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ärdettrue
på fliken Variabler .Du kan också skapa en variabelgrupp som innehåller en variabel med namnet
System.Debug
med värdettrue
och länka den här variabelgruppen till versionspipelinen.
Dricks
Om du stöter på ett fel som rör Azure ARM-tjänstanslutningar kan du läsa Så här: Felsöka Azure Resource Manager-tjänstanslutningar för mer information.