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

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

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 .

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

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.

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

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 hänglås 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å:

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 steget initiera jobb.

  3. 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.

    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 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ärdet truefliken 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ärdet truefliken 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.

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.