Sdílet prostřednictvím


Použití proměnných v nasazovacích kanálech Classic

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Použití proměnných v Classic release pipelines představuje pohodlný způsob výměny a přenosu dat v rámci vašeho pipeline. Každá proměnná je uložená jako řetězec a její hodnota se může mezi spuštěními kanálu změnit.

Na rozdíl od parametrů modulu runtime, které jsou k dispozici pouze v době analýzy šablon, jsou proměnné v kanálech verze Classic přístupné během celého procesu nasazení.

Při nastavování úloh pro nasazení aplikace v každé fázi vašeho klasického vydání pipeliny vám proměnné můžou pomoct:

  • Zjednodušení přizpůsobení: Definujte obecný kanál nasazení jednou a snadno ho přizpůsobte pro různé fáze. Použijte například proměnnou k reprezentaci připojovacího řetězce webového nasazení a upravte jeho hodnotu podle potřeby pro každou fázi. Ty se označují jako vlastní proměnné.

  • Využití kontextových informací: Přístup k podrobnostem o kontextu uvolnění, jako fáze, artefakt nebo agent, na kterém běží nasazení. Skripty můžou například vyžadovat umístění sestavení ke stažení nebo pracovní adresář agenta k vytvoření dočasných souborů. Tyto proměnné se označují jako výchozí proměnné.

Poznámka:

Další podrobnosti o kanálech YAML najdete v uživatelsky definovaných proměnných a předdefinovaných proměnných.

Výchozí proměnné

Výchozí proměnné poskytují základní informace o kontextu spouštění spuštěných úloh a skriptů. Tyto proměnné umožňují získat přístup k podrobnostem o systému, vydání, fázi nebo agentu , ve kterém jsou spuštěné.

S výjimkou System.Debug jsou výchozí proměnné jen pro čtení a jejich hodnoty jsou automaticky nastaveny systémem.

Některé z nejvýznamnějších proměnných jsou popsány v následujících tabulkách. Pokud chcete zobrazit úplný seznam, podívejte se na zobrazení aktuálních hodnot všech proměnných.

Systémové proměnné

Název proměnné Popis
System.TeamFoundationServerUri Adresa URL připojení služby v Azure Pipelines. Použijte ho ze skriptů nebo úloh k volání rozhraní REST API služby Azure Pipelines.

Příklad: https://fabrikam.vsrm.visualstudio.com/
System.TeamFoundationCollectionUri Adresa URL kolekce Team Foundation nebo Azure Pipelines Použijte to ze skriptů nebo úloh k volání rozhraní REST API v jiných službách, jako je sestavení a správa verzí.

Příklad: https://dev.azure.com/fabrikam/
System.CollectionId ID kolekce, do které patří toto sestavení nebo verze.

Příklad: 6c6f3423-1c84-4625-995a-f7f143a1e43d
System.DefinitionId ID vydávacího kanálu, ke kterému aktuální verze patří.

Příklad: 1
System.TeamProject Název projektu, do kterého patří toto sestavení nebo vydání.

Příklad: Fabrikam
System.TeamProjectId ID projektu, do kterého patří toto sestavení nebo vydání.

Příklad: 79f5c12e-3337-4151-be41-a268d2c73344
System.ArtifactsDirectory Adresář, do kterého se artefakty stáhnou během nasazování vydané verze. Adresář se vymaže před každým nasazením, pokud adresář vyžaduje stažení artefaktů do agentem. Stejné jako Agent.ReleaseDirectory a System.DefaultWorkingDirectory.

Příklad: C:\agent\_work\r1\a
System.DefaultWorkingDirectory Adresář, do kterého se artefakty stáhnou během nasazování vydané verze. Adresář se vymaže před každým nasazením, pokud adresář vyžaduje stažení artefaktů do agentem. Stejné jako Agent.ReleaseDirectory a System.ArtifactsDirectory.

Příklad: C:\agent\_work\r1\a
System.WorkFolder Pracovní adresář pro tohoto agenta, kde se vytvoří podsložky pro každé sestavení nebo verzi. Stejné jako Agent.RootDirectory a Agent.WorkFolder.

Příklad: C:\agent\_work
System.Debug Toto je jediná systémová proměnná, kterou můžou uživatelé nastavit . Nastavte tuto hodnotu na true, aby se release spustil v režimu ladění, což pomůže při hledání chyb.

Příklad: true

Proměnné pro vydání

Název proměnné Popis
Release.AttemptNumber Kolikrát je tato verze v této fázi nasazená.

Příklad: 1
Release.DefinitionEnvironmentId Identifikátor fáze v odpovídajícím vydávacím potrubí.

Příklad: 1
Release.DefinitionId ID vydávacího kanálu, ke kterému aktuální verze patří.

Příklad: 1
Release.DefinitionName Název vydávacího kanálu, k němuž aktuální vydání patří.

Příklad: fabrikam-cd
Uvolnění.Nasazení.PožadovánoPro Zobrazovaný název identity, která aktivovala (spustila) probíhající nasazení.

Příklad: Mateo Escobedo
Release.Deployment.RequestedForEmail E-mailová adresa identity, která aktivovala (spustila) probíhající nasazení.

Příklad: mateo@fabrikam.com
Release.Deployment.RequestedForId Identifikační číslo identity, která spustila (zahájila) právě probíhající nasazení.

Příklad: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.DeploymentID Identifikátor nasazení. Jedinečné pro každou úlohu.

Příklad: 254
Release.DeployPhaseID ID fáze, ve které probíhá nasazení.

Příklad: 127
Release.EnvironmentId ID instance fáze ve vydané verzi, do které aktuálně probíhá nasazení.

Příklad: 276
Verze.NázevProstředí Název fáze, do které právě probíhá nasazení.

Příklad: Dev
Release.EnvironmentUri Identifikátor URI instance fáze v rámci verze vydání, ve které právě probíhá nasazení.

Příklad: vstfs://ReleaseManagement/Environment/276
Release.Environment. {stage-name}.status Stav nasazení fáze.

Příklad: InProgress
Release.PrimaryArtifactSourceAlias Alias primárního zdroje artefaktů.

Příklad: fabrikam\_web
Důvod vydání Důvod nasazení. Podporované hodnoty jsou:
ContinuousIntegration – verze byla spuštěna v průběžném nasazování po dokončení sestavení.
Manual – vydání bylo spuštěno ručně.
None – důvod nasazení nebyl zadán.
Schedule – vydání začalo podle plánu.
Uvolnění.PopisUvolnění Textový popis uvedený v době vydání.

Příklad: Critical security patch
Release.ReleaseId Identifikátor záznamu aktuálního vydání.

Příklad: 118
Release.ReleaseName Název aktuální verze

Příklad: Release-47
Release.ReleaseUri URI aktuální verze.

Příklad: vstfs://ReleaseManagement/Release/118
Release.ReleaseWebURL Adresa URL pro tuto verzi.

Příklad: https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary
Vydání.PožadovánoPro Zobrazovaný název identity, která aktivovala vydání.

Příklad: Mateo Escobedo
Release.RequestedForEmail E-mailová adresa identity, která aktivovala uvolnění.

Příklad: mateo@fabrikam.com
Release.RequestedForId ID identity, která aktivovala vydání.

Příklad: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.SkipArtifactsDownload Logická hodnota, která určuje, jestli se má přeskočit stahování artefaktů do agenta.

Příklad: FALSE
Release.TriggeringArtifact.Alias Alias artefaktu, který spustil vydání. Toto pole je prázdné, když bylo vydání naplánováno nebo spuštěno ručně.

Příklad: fabrikam\_app

Proměnné fáze vydání

Název proměnné Popis
Release.Prostředí. {stage name}. Stav Stav nasazení této verze v zadané fázi.

Příklad: NotStarted

Proměnné agenta

Název proměnné Popis
Agent.Name Název agenta zaregistrovaný ve fondu pro agenty. Pravděpodobně se bude lišit od jména počítače.

Příklad: fabrikam-agent
Agent.MachineName Název počítače, na kterém je agent nakonfigurován.

Příklad: fabrikam-agent
Agent.Version Verze softwaru agenta.

Příklad: 2.109.1
Agent.JobName Název spuštěné úlohy, například Release nebo Build.

Příklad: Release
Agent.HomeDirectory Složka, ve které je agent nainstalovaný. Tato složka obsahuje kód a prostředky agenta.

Příklad: C:\agent
Agent.ReleaseDirectory Adresář, do kterého se artefakty stáhnou během nasazování vydané verze. Adresář se vymaže před každým nasazením, pokud adresář vyžaduje stažení artefaktů do agentem. Stejné jako System.ArtifactsDirectory a System.DefaultWorkingDirectory.

Příklad: C:\agent\_work\r1\a
Agent.RootDirectory Pracovní adresář pro tohoto agenta, kde se vytvoří podsložky pro každé sestavení nebo verzi. Stejné jako Agent.WorkFolder a System.WorkFolder.

Příklad: C:\agent\_work
Agent.WorkFolder Pracovní adresář pro tohoto agenta, kde se vytvoří podsložky pro každé sestavení nebo verzi. Stejné jako Agent.RootDirectory a System.WorkFolder.

Příklad: C:\agent\_work
Agent.DeploymentGroupId ID skupiny nasazení, ke které je agent zaregistrovaný. Tato možnost je k dispozici pouze v pracích skupiny nasazení.

Příklad: 1

Proměnné vydání artefaktů

Pro každý artefakt, na který odkazuje uvolnění, můžete použít následující proměnné artefaktů. Všimněte si, že ne všechny proměnné platí pro každý typ artefaktu. Následující tabulka uvádí výchozí proměnné artefaktů a uvádí příklady jejich hodnot na základě typu artefaktu. Pokud je příklad prázdný, znamená to, že proměnná není pro daný typ artefaktu použitelná.

Nahraďte zástupný symbol {alias} hodnotou, kterou jste zadali pro alias zdroje artefaktu, nebo výchozí hodnotou vygenerovanou pro release pipeline.

Název proměnné Popis
Release.Artifacts. {alias}. DefinitionId Identifikátor kanálu buildu nebo úložiště. Příklady:

Azure Pipelines: 1
GitHub: fabrikam/asp
Release.Artifacts. {alias}. DefinitionName Název kanálu buildu nebo úložiště. Příklady:

Azure Pipelines: fabrikam-ci
TFVC: $/fabrikam
Lotr: fabrikam
GitHub: fabrikam/asp (main)
Release.Artifacts. {alias}. BuildNumber Číslo sestavení nebo identifikátor potvrzení. Příklady:

Azure Pipelines: 20170112.1
Jenkins: 20170112.1
TFVC: Changeset 3
Lotr: 38629c964
GitHub: 38629c964
Release.Artifacts.{alias}.BuildId Identifikátor sestavení. Příklady:

Azure Pipelines: 130
Jenkins: 130
GitHub: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts.{alias}.BuildURI Adresa URL sestavení. Příklady:

Azure Pipelines: vstfs://build-release/Build/130
GitHub: https://github.com/fabrikam/asp
Release.Artifacts.{alias}.Zdrojová větev Úplná cesta a název větve, ze které byl zdroj vytvořen. Příklady:

Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. SourceBranchName Název pouze větve, ze které byl zdroj sestaven. Příklady:

Azure Pipelines: main
Release.Artifacts.{alias}.SourceVersion Komit, který byl vytvořen. Příklady:

Azure Pipelines: bc0044458ba1d9298cdc649cb5dcf013180706f7
Release.Artifacts.{alias}.Repository.Provider Typ úložiště, ze kterého byl zdroj sestaven. Příklady:

Azure Pipelines: Git
Release.Artifacts.{alias}.RequestedForID Identifikátor účtu, který aktivoval sestavení. Příklady:

Azure Pipelines: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.Artifacts.{alias}.RequestedFor Název účtu, který požadoval sestavení. Příklady:

Azure Pipelines: Mateo Escobedo
Release.Artifacts.{alias}.Typ Typ zdroje artefaktů, například Build.Examples

Azure Pipelines: Build
Jenkins: Jenkins
TFVC: TFVC
Lotr: Git
GitHub: GitHub
Release.Artifacts. {alias}. PullRequest.TargetBranch Úplná cesta a název větve, která je cílem pull requestu. Tato proměnná se inicializuje pouze v případě, že se nasazení aktivuje tokem pull requestu. Příklady:

Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. PullRequest.TargetBranchName Název pouze větve, která je cílem žádosti o přijetí změn. Tato proměnná se inicializuje pouze v případě, že se nasazení aktivuje tokem pull requestu. Příklady:

Azure Pipelines: main

Proměnné primárního artefaktu

V klasických release kanálech, pokud používáte více artefaktů, můžete jeden určit jako primární artefakt. Azure Pipelines pak naplní následující proměnné určeného primárního artefaktu.

Název proměnné Stejné jako
Build.DefinitionId Release.Artifacts. {Alias primárního artefaktu}. DefinitionId
Build.DefinitionName Release.Artifacts.{Alias primárního artefaktu}.DefinitionName
Build.BuildNumber Release.Artifacts. {Alias primárního artefaktu}. BuildNumber
Build.BuildId Release.Artifacts.{Alias primárního artefaktu}.BuildId
Build.BuildURI Release.Artifacts. {Alias primárního artefaktu}. BuildURI
Build.SourceBranch Release.Artifacts.{Alias primárního artefaktu}.Zdrojová větev
Build.SourceBranchName Release.Artifacts. {Alias primárního artefaktu}. SourceBranchName
Build.SourceVersion Release.Artifacts. {Alias primárního artefaktu}. SourceVersion
Build.Repository.Provider Release.Artifacts.{Alias primárního artefaktu}.Repository.Provider
Build.RequestedForID Release.Artifacts. {Alias primárního artefaktu}. RequestedForID
Build.RequestedFor Release.Artifacts. {Alias primárního artefaktu}. RequestedFor
Build.Type Release.Artifacts. {Alias primárního artefaktu}. Typ
Build.PullRequest.TargetBranch Release.Artifacts. {Alias primárního artefaktu}. PullRequest.TargetBranch
Build.PullRequest.TargetBranchName Release.Artifacts. {Alias primárního artefaktu}. PullRequest.TargetBranchName

Použití výchozích proměnných

Výchozí proměnné můžete použít dvěma způsoby: jako parametry pro úlohy ve vydávacím kanálu nebo ve skriptech.

Výchozí proměnnou můžete použít přímo jako vstup úkolu. Pokud chcete například předat Release.Artifacts.{Artifact alias}.DefinitionName jako argument úkolu PowerShellu pro artefakt s aliasem ASPNET4.CI, použili byste $(Release.Artifacts.ASPNET4.CI.DefinitionName).

Snímek obrazovky znázorňující způsob použití výchozí proměnné jako argumentu

Chcete-li použít výchozí proměnnou ve skriptu, musíte nejprve nahradit . výchozí názvy proměnných _. Pokud chcete například vytisknout hodnotu artefaktu Release.Artifacts.{Artifact alias}.DefinitionName s ASPNET4.CI jako jeho alias ve skriptu PowerShellu, použijte $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME. Všimněte si, že původní alias ASPNET4.CI se nahradí ASPNET4_CI.

Snímek obrazovky znázorňující, jak použít výchozí proměnnou ve vloženém skriptu PowerShellu

Vlastní proměnné

Vlastní proměnné lze definovat v různých oborech.

  • Skupiny proměnných: Skupiny proměnných slouží ke sdílení hodnot napříč všemi definicemi v projektu. To je užitečné, když chcete použít stejné hodnoty v rámci definic, fází a úkolů v rámci projektu a spravovat je z jednoho umístění. Definujte a spravujte skupiny proměnných v knihovně Pipelines.>

  • Proměnné uvolňovacího kanálu: Pomocí proměnných uvolňovacího kanálu můžete sdílet hodnoty napříč všemi fázemi v rámci celého uvolňovacího kanálu. To je ideální pro scénáře, ve kterých potřebujete konzistentní hodnotu napříč fázemi a úkoly a schopnost ji aktualizovat z jednoho umístění. Tyto proměnné definujte a spravujte na kartě Proměnné vydávacího kanálu. Na stránce Proměnné v kanálu nastavte rozevírací seznam Rozsah na Release při přidávání proměnné.

  • Proměnné fáze: Použijte proměnné fáze ke sdílení hodnot v rámci konkrétní fáze distribučního kanálu. To je užitečné pro hodnoty, které se liší od fáze po fázi, ale jsou konzistentní ve všech úkolech v rámci fáze. Tyto proměnné definujte a spravujte na kartě Proměnné vydávacího kanálu. Na stránce Proměnné kanálu nastavte rozevírací seznam Rozsah na odpovídající prostředí při přidávání proměnné.

Použití vlastních proměnných na úrovních projektu, kanálu verze a fáze vám pomůže:

  • Vyhněte se duplikování hodnot, což usnadňuje aktualizaci všech výskytů jedinou změnou.

  • Zabezpečte citlivé hodnoty tím, že jim zabráníte v jejich zobrazení nebo úpravách uživateli. Pokud chcete proměnnou označit jako zabezpečenou (tajnou), vyberte visací zámek ikonu vedle proměnné.

    Důležité

    Hodnoty skrytých proměnných (tajný kód) jsou bezpečně uložené na serveru a uživatelé je po uložení nedají zobrazit. Během nasazování azure Pipelines tyto hodnoty dešifruje při odkazování na úlohy a předá je agentu přes zabezpečený kanál HTTPS.

Poznámka:

Vytváření vlastních proměnných může přepsat standardní proměnné. Pokud například definujete vlastní Path proměnnou na Windows agentu, přepíše $env:Path proměnnou, což může zabránit správnému fungování PowerShellu.

Použití vlastních proměnných

Pokud chcete ve svých úkolech použít vlastní proměnné, uzavřete název proměnné do závorek a před něj znakem $ . Pokud máte například proměnnou s názvem adminUserName, můžete její aktuální hodnotu vložit do úkolu jako $(adminUserName).

Poznámka:

Proměnné z různých skupin propojených s kanalizací ve stejném rozsahu (např. úloha nebo fáze) mohou kolidovat, což vede k nepředvídatelným výsledkům. Abyste tomu předešli, ujistěte se, že proměnné ve všech skupinách proměnných mají jedinečné názvy.

Definování a úprava proměnných ve skriptu

Pokud chcete definovat nebo upravit proměnnou ze skriptu, použijte task.setvariable příkaz protokolování. Aktualizovaná hodnota proměnné je vymezena na spuštěnou úlohu a nepřechovává se napříč úlohami nebo fázemi. Všimněte si, že názvy proměnných se transformují na velká písmena, "." a " nahrazeny slovem "_".

Například z Agent.WorkFolder se stane AGENT_WORKFOLDER.

  • Přistupte k této proměnné ve Windows jako %AGENT_WORKFOLDER% nebo $env:AGENT_WORKFOLDER.
  • V Linuxu a macOS použijte $AGENT_WORKFOLDER.

Tip

Skript můžete spustit na:

Skript služby Batch

Nastavit sauce a secret.Sauce proměnné

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

Přečti proměnné

Argumenty

"$(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)

Výstup konzoly ze čtení proměnných:

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)

Zobrazení aktuálních hodnot všech proměnných

  1. Vyberte Pipelines>Releases a pak vyberte kanál vydání.

  2. Otevřete souhrnné zobrazení pro vaši verzi a vyberte fázi, kterou vás zajímá. V seznamu kroků zvolte Inicializovat úlohu.

    Snímek obrazovky zobrazující krok inicializace úlohy

  3. Tím se otevřou protokoly pro tento krok. Posuňte se dolů a zobrazte hodnoty používané agentem pro tuto úlohu.

    Snímek obrazovky zobrazující proměnné používané agentem

Spuštění verze v režimu ladění

Spuštění verze v režimu ladění vám může pomoct s diagnostikou a řešením problémů nebo selhání zobrazením dalších informací během provádění vydané verze. Režim ladění můžete povolit pro celou verzi nebo jenom pro úlohy v rámci konkrétní fáze vydání.

  • Pokud chcete povolit režim ladění pro celé vydání, přidejte proměnnou pojmenovanou System.Debug s hodnotou true na záložku Proměnné potrubí vydání.

  • Chcete-li povolit režim ladění pro určitou fázi, otevřete dialogové okno Konfigurovat fázi z místní nabídky fáze a přidejte proměnnou s názvem System.Debug s hodnotou true na kartu Proměnné .

  • Případně vytvořte skupinu proměnných obsahující proměnnou s názvem System.Debug s hodnotou true, a propojte tuto skupinu proměnných s nasazovacím kanálem.

Tip

Pokud dojde k chybě související s připojeními služby Azure ARM, další podrobnosti najdete v tématu Postupy: Řešení potíží s připojeními služeb Azure Resource Manageru.