Variabelen voor klassieke release en artefacten

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

Klassieke variabelen voor release en artefacten zijn een handige manier om gegevens in uw pijplijn uit te wisselen en te transporteren. Elke variabele wordt opgeslagen als een tekenreeks en de waarde ervan kan veranderen tussen uitvoeringen van uw pijplijnen.

Variabelen verschillen van Runtime-parameters die alleen beschikbaar zijn tijdens het parseren van sjablonen.

Wanneer u de taken voor het implementeren van uw toepassing in elke fase in uw DevOps CI/CD-processen opstelt, helpen variabelen u bij het volgende:

  • Definieer eenmaal een algemenere implementatiepijplijn en pas deze vervolgens eenvoudig aan voor elke fase. Een variabele kan bijvoorbeeld worden gebruikt om de verbindingsreeks voor webimplementatie weer te geven en de waarde van deze variabele kan worden gewijzigd van de ene fase naar de andere. Dit zijn aangepaste variabelen.

  • Gebruik informatie over de context van de specifieke release, fase, artefacten of agent waarin de implementatiepijplijn wordt uitgevoerd. Uw script heeft bijvoorbeeld toegang nodig tot de locatie van de build om deze te downloaden of naar de werkmap op de agent om tijdelijke bestanden te maken. Dit zijn standaardvariabelen.

Notitie

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

Standaardvariabelen

Informatie over de uitvoeringscontext wordt beschikbaar gesteld voor het uitvoeren van taken via standaardvariabelen. Uw taken en scripts kunnen deze variabelen gebruiken om informatie te vinden over het systeem, de release, de fase of de agent waarin ze worden uitgevoerd. Met uitzondering van System.Debug zijn deze variabelen alleen-lezen en worden hun waarden automatisch ingesteld door het systeem. 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.

Tip

U kunt de huidige waarden van alle variabelen voor een release bekijken en een standaardvariabele gebruiken om een release uit te voeren in de foutopsporingsmodus.

Systeem

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

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 dat 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

Releasefase

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

Voorbeeld: NotStarted

Agent

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

Algemeen artefact

Voor elk artefact waarnaar wordt verwezen in een release, kunt u de volgende artefactvariabelen gebruiken. Niet alle variabelen zijn zinvol voor elk artefacttype. De onderstaande tabel bevat de standaardartefactvariabelen en bevat voorbeelden van de waarden die ze hebben, afhankelijk van het artefacttype. Als een voorbeeld leeg is, betekent dit dat de variabele niet is ingevuld voor dat artefacttype.

Vervang de {alias} tijdelijke aanduiding door de waarde die u hebt opgegeven voor de artefactalias 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.

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

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

Azure Pipelines-voorbeeld: 20170112.1
Voorbeeld van Jenkins/TeamCity: 20170112.1
TFVC-voorbeeld: Changeset 3
Git-voorbeeld: 38629c964
GitHub-voorbeeld: 38629c964
Release.Artifacts. {alias}. BuildId De build-id.

Azure Pipelines-voorbeeld: 130
Voorbeeld van Jenkins/TeamCity: 130
GitHub-voorbeeld: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts. {alias}. BuildURI De URL voor de build.

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

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

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

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

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

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

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

Azure Pipelines-voorbeeld: Build
Jenkins-voorbeeld: Jenkins
Voorbeeld van TeamCity: TeamCity
TFVC-voorbeeld: TFVC
Git-voorbeeld: Git
GitHub-voorbeeld: 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.

Azure Pipelines-voorbeeld: 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.

Azure Pipelines-voorbeeld: main

Zie ook artefactbronalias

Primair artefact

U wijst een van de artefacten aan als een primair artefact in een release-pijplijn. Voor het aangewezen primaire artefact vult Azure Pipelines de volgende variabelen in.

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 gebruiken als invoer voor een taak. Als u bijvoorbeeld wilt doorgeven Release.Artifacts.{Artifact alias}.DefinitionName voor de artefactbron waarvan de alias is ASPNET4.CI aan een taak, gebruikt $(Release.Artifacts.ASPNET4.CI.DefinitionName)u .

Artefactvariabelen gebruiken in argumenten voor een PowerShell-scripttaak

Als u een standaardvariabele in uw script wilt gebruiken, moet u eerst de . standaardvariabelenamen vervangen door _. Als u bijvoorbeeld de waarde van de artefactvariabele Release.Artifacts.{Artifact alias}.DefinitionName wilt afdrukken voor de artefactbron waarvan de alias is ASPNET4.CI in een PowerShell-script, gebruikt $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAMEu .

Artefactvariabelen gebruiken in een inline PowerShell-script

Houd er rekening mee dat de oorspronkelijke naam van de alias van de artefactbron ASPNET4.CIwordt vervangen door ASPNET4_CI.

De huidige waarden van alle variabelen weergeven

  1. Open de pijplijnenweergave van de samenvatting voor de release en kies de fase waarin u geïnteresseerd bent. Kies in de lijst met stappen de taak Initialiseren.

    Het logboek openen voor een release

  2. Hiermee opent u het logboek voor deze stap. Schuif omlaag om de waarden te zien die door de agent voor deze taak worden gebruikt.

    De waarden van de variabelen in een release weergeven

Een release uitvoeren in de foutopsporingsmodus

Aanvullende informatie weergeven als een release wordt uitgevoerd en in de logboekbestanden door de hele release uit te voeren, of alleen de taken in een afzonderlijke releasefase, in de foutopsporingsmodus. Dit kan u helpen bij het oplossen van problemen en fouten.

  • Als u de foutopsporingsmodus voor een volledige release wilt initiëren, voegt u een variabele met de naam System.Debugtrue toe aan het tabblad Variabelen van een release-pijplijn.

  • Als u de foutopsporingsmodus voor één fase wilt initiëren, opent u het dialoogvenster Fase configureren vanuit het snelmenu van de fase en voegt u een variabele met de naam System.Debugtrue toe aan het tabblad Variabelen.

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

Tip

Als u een fout krijgt met betrekking tot een Azure RM-serviceverbinding, raadpleegt u Procedure: Problemen met Azure Resource Manager-serviceverbindingen oplossen.

Aangepaste variabelen

Aangepaste variabelen kunnen worden gedefinieerd in verschillende bereiken.

  • Waarden delen in alle definities in een project met behulp van variabele groepen. Kies een variabelegroep wanneer u dezelfde waarden wilt gebruiken voor alle definities, fasen en taken in een project en u de waarden op één plaats wilt kunnen wijzigen. U definieert en beheert variabelegroepen op het tabblad Bibliotheek .

  • Deel waarden in alle fasen met behulp van releasepijplijnvariabelen. Kies een release-pijplijnvariabele wanneer u dezelfde waarde moet gebruiken voor alle fasen en taken in de release-pijplijn en u de waarde op één plaats wilt kunnen wijzigen. U definieert en beheert deze variabelen op het tabblad Variabelen in een release-pijplijn. Open op de pagina Pijplijnvariabelen de vervolgkeuzelijst Bereik en selecteer 'Release'. Wanneer u een variabele toevoegt, wordt deze standaard ingesteld op Release-bereik.

  • Deel waarden voor alle taken binnen één specifieke fase met behulp van fasevariabelen. Gebruik een variabele op faseniveau voor waarden die variëren van fase tot fase (en zijn hetzelfde voor alle taken in een fase). U definieert en beheert deze variabelen op het tabblad Variabelen van een release-pijplijn. Open op de pagina Pijplijnvariabelen de vervolgkeuzelijst Bereik en selecteer de vereiste fase. Wanneer u een variabele toevoegt, stelt u het bereik in op de juiste omgeving.

Het gebruik van aangepaste variabelen in project-, release-pijplijn- en fasebereik helpt u bij het volgende:

  • Vermijd duplicatie van waarden, waardoor het eenvoudiger is om alle exemplaren bij te werken als één bewerking.

  • Sla gevoelige waarden op een manier op die ze niet kunnen zien of wijzigen door gebruikers van de release-pijplijnen. Wijs een configuratie-eigenschap aan als een veilige (geheime) variabele door het Hangslot pictogram (hangslot) naast de variabele te selecteren.

    Belangrijk

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

Notitie

Het maken van aangepaste variabelen kan standaardvariabelen overschrijven. Bijvoorbeeld de omgevingsvariabele powerShell-pad. Als u een aangepaste Path variabele maakt op een Windows-agent, wordt de $env:Path variabele overschreven en kan PowerShell niet worden uitgevoerd.

Aangepaste variabelen gebruiken

Als u aangepaste variabelen in uw build- en releasetaken wilt gebruiken, plaatst u de naam van de variabele tussen haakjes en plaatst u deze vooraf aan een $ teken. Als u bijvoorbeeld een variabele met de naam adminUserName hebt, kunt u de huidige waarde van die variabele invoegen in een parameter van een taak als $(adminUserName).

Notitie

Variabelen in verschillende groepen die zijn gekoppeld aan een pijplijn in hetzelfde bereik (bijvoorbeeld taak of fase) botsen en het resultaat kan onvoorspelbaar zijn. Zorg ervoor dat u verschillende namen gebruikt voor variabelen in al uw variabelegroepen.

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. Houd er rekening mee dat de bijgewerkte variabelewaarde is gericht op de taak die wordt uitgevoerd en niet doorloopt tussen taken of fasen. Variabelenamen worden omgezet in hoofdletters en de tekens '.' en '' worden vervangen door '_'.

Zo wordt Agent.WorkFolder gewijzigd in AGENT_WORKFOLDER. In Windows opent u dit als %AGENT_WORKFOLDER% of $env:AGENT_WORKFOLDER. In Linux en macOS gebruikt $AGENT_WORKFOLDERu .

Tip

U kunt een script uitvoeren op een:

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)