Delen via


Variabelen gebruiken in klassieke release-pijplijnen

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Het gebruik van variabelen in klassieke release-pijplijnen is een handige manier om gegevens in uw pijplijn uit te wisselen en te transporteren. Elke variabele wordt opgeslagen als een tekenreeks en de waarde kan veranderen tussen pijplijnuitvoeringen.

In tegenstelling tot runtimeparameters, die alleen beschikbaar zijn tijdens het parseren van sjablonen, zijn variabelen in klassieke release-pijplijnen toegankelijk gedurende het hele implementatieproces

Bij het instellen van taken voor het implementeren van uw toepassing in elke fase van uw klassieke release-pijplijn, kunnen variabelen u helpen:

  • Aanpassing vereenvoudigen: Definieer eenmaal een algemene implementatiepijplijn en pas deze eenvoudig aan voor verschillende fasen. Gebruik bijvoorbeeld een variabele om de verbindingsreeks van een webimplementatie weer te geven, waarbij u de waarde zo nodig voor elke fase aanpast. Deze worden aangepaste variabelen genoemd.

  • Gebruik contextuele informatie: krijg toegang tot details over de releasecontext, zoals een fase, een artefact of de agent waarop de implementatie wordt uitgevoerd. Uw scripts kunnen bijvoorbeeld de buildlocatie vereisen voor downloaden of de werkmap van de agent om tijdelijke bestanden te maken. Deze worden standaardvariabelen genoemd.

Notitie

Zie voor YAML-pijplijnen door de gebruiker gedefinieerde variabelen en vooraf gedefinieerde variabelen voor meer informatie.

Standaardvariabelen

Standaardvariabelen bieden essentiële informatie over de uitvoeringscontext voor uw actieve taken en scripts. Met deze variabelen hebt u toegang tot details over het systeem, de release, de fase of de agent waarin ze worden uitgevoerd.

Met uitzondering van System.Debug zijn standaardvariabelen alleen-lezen, waarbij hun waarden automatisch door het systeem worden ingesteld.

Sommige van de belangrijkste variabelen worden beschreven in de volgende tabellen. Zie De huidige waarden van alle variabelen weergeven om de volledige lijst weer te geven.

Systeemvariabelen

Variabelenaam Beschrijving
System.TeamFoundationServerUri De URL van de serviceverbinding in Azure Pipelines. Gebruik dit vanuit uw scripts of taken om REST API's van Azure Pipelines aan te roepen.

Voorbeeld: https://fabrikam.vsrm.visualstudio.com/
System.TeamFoundationCollectionUri De URL van de Team Foundation-verzameling of Azure Pipelines. Gebruik dit vanuit uw scripts of taken om REST API's aan te roepen voor andere services, zoals build- en versiebeheer.

Voorbeeld: https://dev.azure.com/fabrikam/
System.CollectionId De id van de verzameling waartoe deze build of release behoort.

Voorbeeld: 6c6f3423-1c84-4625-995a-f7f143a1e43d
System.DefinitionId De id van de release-pijplijn waartoe de huidige release behoort.

Voorbeeld: 1
System.TeamProject De naam van het project waartoe deze build of release behoort.

Voorbeeld: Fabrikam
System.TeamProjectId De id van het project waartoe deze build of release behoort.

Voorbeeld: 79f5c12e-3337-4151-be41-a268d2c73344
System.ArtifactsDirectory De map waarnaar artefacten worden gedownload tijdens de implementatie van een release. De map wordt vóór elke implementatie gewist als er artefacten naar de agent moeten worden gedownload. Hetzelfde als Agent.ReleaseDirectory en System.DefaultWorkingDirectory.

Voorbeeld: C:\agent\_work\r1\a
System.DefaultWorkingDirectory De map waarnaar artefacten worden gedownload tijdens de implementatie van een release. De map wordt vóór elke implementatie gewist als er artefacten naar de agent moeten worden gedownload. Hetzelfde als Agent.ReleaseDirectory en System.ArtifactsDirectory.

Voorbeeld: C:\agent\_work\r1\a
System.WorkFolder De werkmap voor deze agent, waarin submappen worden gemaakt voor elke build of release. Hetzelfde als Agent.RootDirectory en Agent.WorkFolder.

Voorbeeld: C:\agent\_work
System.Debug Dit is de enige systeemvariabele die door de gebruikers kan worden ingesteld . Stel dit in op True om de release uit te voeren in de foutopsporingsmodus om te helpen bij foutopsporing.

Voorbeeld: true

Variabelen vrijgeven

Variabelenaam Beschrijving
Release.AttemptNumber Het aantal keren dat deze release in deze fase wordt geïmplementeerd.

Voorbeeld: 1
Release.DefinitionEnvironmentId De id van de fase in de bijbehorende release-pijplijn.

Voorbeeld: 1
Release.DefinitionId De id van de release-pijplijn waartoe de huidige release behoort.

Voorbeeld: 1
Release.DefinitionName De naam van de release-pijplijn waartoe de huidige release behoort.

Voorbeeld: fabrikam-cd
Release.Deployment.RequestedFor De weergavenaam van de identiteit die de implementatie heeft geactiveerd (gestart) die momenteel wordt uitgevoerd.

Voorbeeld: Mateo Escobedo
Release.Deployment.RequestedForEmail Het e-mailadres van de identiteit die de implementatie heeft geactiveerd (gestart) die momenteel wordt uitgevoerd.

Voorbeeld: mateo@fabrikam.com
Release.Deployment.RequestedForId De id van de identiteit die de implementatie heeft geactiveerd (gestart) die momenteel wordt uitgevoerd.

Voorbeeld: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.DeploymentID De id van de implementatie. Uniek per taak.

Voorbeeld: 254
Release.DeployPhaseID De id van de fase waarin de implementatie wordt uitgevoerd.

Voorbeeld: 127
Release.EnvironmentId De id van het fase-exemplaar in een release waarop de implementatie momenteel wordt uitgevoerd.

Voorbeeld: 276
Release.EnvironmentName De naam van de fase waarin de implementatie momenteel wordt uitgevoerd.

Voorbeeld: Dev
Release.EnvironmentUri De URI van het fase-exemplaar in een release waarop de implementatie momenteel wordt uitgevoerd.

Voorbeeld: vstfs://ReleaseManagement/Environment/276
Release.Environments. {stage-name}.status De implementatiestatus van de fase.

Voorbeeld: InProgress
Release.PrimaryArtifactSourceAlias De alias van de primaire artefactbron.

Voorbeeld: fabrikam\_web
Release.Reason De reden voor de implementatie. Ondersteunde waarden zijn:
ContinuousIntegration - de release is gestart in Continue implementatie nadat een build is voltooid.
Manual - de release handmatig is gestart.
None - de reden van de implementatie is niet opgegeven.
Schedule - de release is gestart vanaf een planning.
Release.ReleaseDescription De tekstbeschrijving die is opgegeven op het moment van de release.

Voorbeeld: Critical security patch
Release.ReleaseId De id van de huidige releaserecord.

Voorbeeld: 118
Release.ReleaseName De naam van de huidige release.

Voorbeeld: Release-47
Release.ReleaseUri De URI van de huidige release.

Voorbeeld: vstfs://ReleaseManagement/Release/118
Release.ReleaseWebURL De URL voor deze release.

Voorbeeld: https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary
Release.RequestedFor De weergavenaam van de identiteit die de release heeft geactiveerd.

Voorbeeld: Mateo Escobedo
Release.RequestedForEmail Het e-mailadres van de identiteit die de release heeft geactiveerd.

Voorbeeld: mateo@fabrikam.com
Release.RequestedForId De id van de identiteit die de release heeft geactiveerd.

Voorbeeld: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.SkipArtifactsDownload Booleaanse waarde die aangeeft of het downloaden van artefacten naar de agent al dan niet moet worden overgeslagen.

Voorbeeld: FALSE
Release.TriggeringArtifact.Alias De alias van het artefact dat de release heeft geactiveerd. Dit is leeg wanneer de release is gepland of handmatig is geactiveerd.

Voorbeeld: fabrikam\_app

Variabelen in de releasefase

Variabelenaam Beschrijving
Release.Environments. {naam van fase}. Status De status van de implementatie van deze release binnen een opgegeven fase.

Voorbeeld: NotStarted

Agentvariabelen

Variabelenaam Beschrijving
Agent.Name De naam van de agent die is geregistreerd bij de agentgroep. Dit is waarschijnlijk anders dan de computernaam.

Voorbeeld: fabrikam-agent
Agent.MachineName De naam van de computer waarop de agent is geconfigureerd.

Voorbeeld: fabrikam-agent
Agent.Version De versie van de agentsoftware.

Voorbeeld: 2.109.1
Agent.JobName De naam van de taak die wordt uitgevoerd, zoals Release of Build.

Voorbeeld: Release
Agent.HomeDirectory De map waarin de agent is geïnstalleerd. Deze map bevat de code en resources voor de agent.

Voorbeeld: C:\agent
Agent.ReleaseDirectory De map waarnaar artefacten worden gedownload tijdens de implementatie van een release. De map wordt vóór elke implementatie gewist als er artefacten naar de agent moeten worden gedownload. Hetzelfde als System.ArtifactsDirectory en System.DefaultWorkingDirectory.

Voorbeeld: C:\agent\_work\r1\a
Agent.RootDirectory De werkmap voor deze agent, waarin submappen worden gemaakt voor elke build of release. Hetzelfde als Agent.WorkFolder en System.WorkFolder.

Voorbeeld: C:\agent\_work
Agent.WorkFolder De werkmap voor deze agent, waarin submappen worden gemaakt voor elke build of release. Hetzelfde als Agent.RootDirectory en System.WorkFolder.

Voorbeeld: C:\agent\_work
Agent.DeploymentGroupId De id van de implementatiegroep waarmee de agent is geregistreerd. Dit is alleen beschikbaar in de taken van de implementatiegroep.

Voorbeeld: 1

Variabelen voor artefacten vrijgeven

Voor elk artefact waarnaar wordt verwezen in een release, kunt u de volgende artefactvariabelen gebruiken. Houd er rekening mee dat niet alle variabelen van toepassing zijn op elk artefacttype. De onderstaande tabel bevat standaardvariabelen voor artefacten en bevat voorbeelden van hun waarden op basis van het artefacttype. Als een voorbeeld leeg is, geeft dit aan dat de variabele niet van toepassing is op dat artefacttype.

Vervang de {alias} tijdelijke aanduiding door de waarde die u hebt opgegeven voor de artefactbronalias of door de standaardwaarde die is gegenereerd voor de release-pijplijn.

Variabelenaam Beschrijving
Release.Artifacts. {alias}. DefinitionId De id van de build-pijplijn of opslagplaats. Voorbeelden:

Azure Pipelines: 1
GitHub: fabrikam/asp
Release.Artifacts. {alias}. DefinitionName De naam van de build-pijplijn of opslagplaats. Voorbeelden:

Azure Pipelines: fabrikam-ci
TFVC: $/fabrikam
Git: fabrikam
GitHub: fabrikam/asp (main)
Release.Artifacts. {alias}. BuildNumber Het buildnummer of de doorvoerings-id. Voorbeelden:

Azure Pipelines: 20170112.1
Jenkins: 20170112.1
TFVC: Changeset 3
Git: 38629c964
GitHub: 38629c964
Release.Artifacts. {alias}. BuildId De build-id. Voorbeelden:

Azure Pipelines: 130
Jenkins: 130
GitHub: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts. {alias}. BuildURI De URL voor de build. Voorbeelden:

Azure Pipelines: vstfs://build-release/Build/130
GitHub: https://github.com/fabrikam/asp
Release.Artifacts. {alias}. SourceBranch Het volledige pad en de naam van de vertakking waaruit de bron is gebouwd. Voorbeelden:

Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. SourceBranchName De naam alleen van de vertakking waaruit de bron is gebouwd. Voorbeelden:

Azure Pipelines: main
Release.Artifacts. {alias}. SourceVersion De doorvoering die is gebouwd. Voorbeelden:

Azure Pipelines: bc0044458ba1d9298cdc649cb5dcf013180706f7
Release.Artifacts. {alias}. Repository.Provider Het type opslagplaats waaruit de bron is gebouwd. Voorbeelden:

Azure Pipelines: Git
Release.Artifacts. {alias}. RequestedForID De id van het account dat de build heeft geactiveerd. Voorbeelden:

Azure Pipelines: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.Artifacts. {alias}. RequestedFor De naam van het account dat de build heeft aangevraagd. Voorbeelden:

Azure Pipelines: Mateo Escobedo
Release.Artifacts. {alias}. Type Het type artefactbron, zoals Build.Examples

Azure Pipelines: Build
Jenkins: Jenkins
TFVC: TFVC
Git: Git
GitHub: GitHub
Release.Artifacts. {alias}. PullRequest.TargetBranch Het volledige pad en de naam van de vertakking die het doel is van een pull-aanvraag. Deze variabele wordt alleen geïnitialiseerd als de release wordt geactiveerd door een pull-aanvraagstroom. Voorbeelden:

Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. PullRequest.TargetBranchName De naam alleen van de vertakking die het doel is van een pull-aanvraag. Deze variabele wordt alleen geïnitialiseerd als de release wordt geactiveerd door een pull-aanvraagstroom. Voorbeelden:

Azure Pipelines: main

Variabelen voor primaire artefacten

Als u in klassieke releasepijplijnen meerdere artefacten gebruikt, kunt u er een aanwijzen als het primaire artefact. Azure Pipelines vult vervolgens de volgende variabelen in voor het aangewezen primaire artefact.

Variabelenaam Hetzelfde als
Build.DefinitionId Release.Artifacts. {Alias van primair artefact}. DefinitionId
Build.DefinitionName Release.Artifacts. {Alias van primair artefact}. DefinitionName
Build.BuildNumber Release.Artifacts. {Alias van primair artefact}. BuildNumber
Build.BuildId Release.Artifacts. {Alias van primair artefact}. BuildId
Build.BuildURI Release.Artifacts. {Alias van primair artefact}. BuildURI
Build.SourceBranch Release.Artifacts. {Alias van primair artefact}. SourceBranch
Build.SourceBranchName Release.Artifacts. {Alias van primair artefact}. SourceBranchName
Build.SourceVersion Release.Artifacts. {Alias van primair artefact}. SourceVersion
Build.Repository.Provider Release.Artifacts. {Alias van primair artefact}. Repository.Provider
Build.RequestedForID Release.Artifacts. {Alias van primair artefact}. RequestedForID
Build.RequestedFor Release.Artifacts. {Alias van primair artefact}. RequestedFor
Build.Type Release.Artifacts. {Alias van primair artefact}. Type
Build.PullRequest.TargetBranch Release.Artifacts. {Alias van primair artefact}. PullRequest.TargetBranch
Build.PullRequest.TargetBranchName Release.Artifacts. {Alias van primair artefact}. PullRequest.TargetBranchName

Standaardvariabelen gebruiken

U kunt de standaardvariabelen op twee manieren gebruiken: als parameters voor taken in een release-pijplijn of in uw scripts.

U kunt een standaardvariabele rechtstreeks als invoer voor een taak gebruiken. Als u bijvoorbeeld als argument wilt doorgeven Release.Artifacts.{Artifact alias}.DefinitionName aan een PowerShell-taak voor een artefact met ASPNET4.CI als alias, gebruikt $(Release.Artifacts.ASPNET4.CI.DefinitionName)u .

Een schermopname van het gebruik van een standaardvariabele als argument.

Als u een standaardvariabele in uw script wilt gebruiken, moet u eerst de . standaardvariabelenamen vervangen door _. Als u bijvoorbeeld de waarde van Release.Artifacts.{Artifact alias}.DefinitionName een artefact wilt afdrukken met ASPNET4.CI als alias in een PowerShell-script, gebruikt u $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME. Houd er rekening mee dat de oorspronkelijke alias, ASPNET4.CI, wordt vervangen door ASPNET4_CI.

Een schermopname van het gebruik van een standaardvariabele in een inline PowerShell-script.

Aangepaste variabelen

Aangepaste variabelen kunnen worden gedefinieerd in verschillende bereiken.

  • Variabelegroepen: gebruik variabelegroepen om waarden te delen in alle definities in een project. Dit is handig als u dezelfde waarden wilt gebruiken in definities, fasen en taken binnen een project en deze vanaf één locatie wilt beheren. Variabelengroepen definiëren en beheren in de pijplijnbibliotheek>.

  • Release-pijplijnvariabelen: gebruik releasepijplijnvariabelen om waarden te delen in alle fasen binnen een release-pijplijn. Dit is ideaal voor scenario's waarbij u een consistente waarde nodig hebt voor fasen en taken, met de mogelijkheid om deze vanaf één locatie bij te werken. Definieer en beheer deze variabelen op het tabblad Variabelen van de release-pijplijn. Stel op de pagina Pijplijnvariabelen de vervolgkeuzelijst Bereik in op Release wanneer u een variabele toevoegt.

  • Fasevariabelen: gebruik fasevariabelen om waarden te delen binnen een specifieke fase van een release-pijplijn. Dit is handig voor waarden die verschillen van fase tot fase, maar consistent zijn voor alle taken binnen een fase. Definieer en beheer deze variabelen op het tabblad Variabelen van de release-pijplijn. Stel op de pagina Pijplijnvariabelen de vervolgkeuzelijst Bereik in op de juiste omgeving bij het toevoegen van een variabele.

Met behulp van aangepaste variabelen op project-, release-pijplijn- en faseniveaus kunt u het volgende doen:

  • Vermijd het dupliceren van waarden, waardoor het eenvoudiger is om alle exemplaren bij te werken met één wijziging.

  • Beveilig gevoelige waarden door te voorkomen dat ze door gebruikers worden bekeken of gewijzigd. Als u een variabele als veilig (geheim) wilt markeren, selecteert u het hangslot pictogram naast de variabele.

    Belangrijk

    De waarden van de verborgen variabelen (geheim) worden veilig opgeslagen op de server en kunnen niet worden weergegeven door gebruikers nadat ze zijn opgeslagen. Tijdens de implementatie ontsleutelt Azure Pipelines deze waarden wanneer naar taken wordt verwezen en doorgegeven aan de agent via een beveiligd HTTPS-kanaal.

Notitie

Het maken van aangepaste variabelen kan standaardvariabelen overschrijven. Als u bijvoorbeeld een aangepaste padvariabele op een Windows-agent definieert, wordt de variabele $env:Path overschreven, waardoor PowerShell mogelijk niet goed wordt uitgevoerd.

Aangepaste variabelen gebruiken

Als u aangepaste variabelen in uw taken wilt gebruiken, plaatst u de naam van de variabele tussen haakjes en plaatst u deze vóór een $ teken. Als u bijvoorbeeld een variabele met de naam adminUserName hebt, kunt u de huidige waarde in een taak invoegen als $(adminUserName).

Notitie

Variabelen uit verschillende groepen die zijn gekoppeld aan een pijplijn binnen hetzelfde bereik (bijvoorbeeld taak of fase) kunnen conflicteren, wat tot onvoorspelbare resultaten leidt. Om dit te voorkomen, moet u ervoor zorgen dat variabelen in al uw variabelegroepen unieke namen hebben.

Uw variabelen definiëren en wijzigen in een script

Als u een variabele van een script wilt definiëren of wijzigen, gebruikt u de task.setvariable opdracht voor logboekregistratie. De bijgewerkte variabelewaarde is gericht op de taak die wordt uitgevoerd en blijft niet behouden tussen taken of fasen. Houd er rekening mee dat namen van variabelen worden omgezet in hoofdletters, met '.' en '' vervangen door '_'.

Zo wordt Agent.WorkFolder gewijzigd in AGENT_WORKFOLDER.

  • Open deze variabele in Windows als %AGENT_WORKFOLDER% of $env:AGENT_WORKFOLDER.
  • Gebruik in Linux en macOS $AGENT_WORKFOLDER.

Tip

U kunt een script uitvoeren op:

Batch-script

sauce De en secret.Sauce variabelen instellen

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

De variabelen lezen

Argumenten

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

Script

@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)

Console-uitvoer van het lezen van de variabelen:

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)

De huidige waarden van alle variabelen weergeven

  1. Selecteer Pijplijnreleases> en selecteer vervolgens uw release-pijplijn.

  2. Open de overzichtsweergave voor uw release en selecteer de fase waarin u geïnteresseerd bent. Kies in de lijst met stappen de taak Initialiseren.

    Een schermopname van de initialisatietaakstap.

  3. Hiermee worden de logboeken voor deze stap geopend. Schuif omlaag om de waarden te zien die door de agent voor deze taak worden gebruikt.

    Een schermopname van de variabelen die door de agent worden gebruikt.

Een release uitvoeren in de foutopsporingsmodus

Als u een release uitvoert in de foutopsporingsmodus, kunt u problemen of fouten vaststellen en oplossen door aanvullende informatie weer te geven tijdens de uitvoering van de release. U kunt de foutopsporingsmodus inschakelen voor de hele release of alleen voor de taken in een specifieke releasefase.

  • Als u de foutopsporingsmodus voor een volledige release wilt inschakelen, voegt u een variabele met de naam System.Debug met de waarde true toe aan het tabblad Variabelen van de release-pijplijn.

  • Als u de foutopsporingsmodus voor een specifieke fase wilt inschakelen, opent u het dialoogvenster Fase configureren in het snelmenu van de fase en voegt u een variabele met de naam System.Debug true toe aan het tabblad Variabelen.

  • U kunt ook een variabelegroep maken met een variabele met de naam System.Debug van de waarde trueen deze variabelegroep koppelen aan de release-pijplijn.

Tip

Als er een fout optreedt met betrekking tot Azure ARM-serviceverbindingen, raadpleegt u Procedure: Problemen met Azure Resource Manager-serviceverbindingen oplossen voor meer informatie.