Použití proměnných v kanálech verze Classic
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Použití proměnných v kanálech verze Classic představuje pohodlný způsob výměny a přenosu dat v rámci kanálu. 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 kanálu verze Classic 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í řetězec nasazení webu a upravte její 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 vydané verze, jako je 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 najdete v kanálech YAML 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 kanálu verze, do kterého 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 vyžaduje stažení artefaktů do agenta. 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 vyžaduje stažení artefaktů do agenta. 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 vydání. 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 verze spustila v režimu ladění, aby pomohla při hledání chyb. Příklad: true |
Proměnné vydané verze
Název proměnné | Popis |
---|---|
Release.AttemptNumber | Kolikrát je tato verze v této fázi nasazená. Příklad: 1 |
Release.DefinitionEnvironmentId | ID fáze v odpovídajícím kanálu verze. Příklad: 1 |
Release.DefinitionId | ID kanálu verze, do kterého aktuální verze patří. Příklad: 1 |
Release.DefinitionName | Název kanálu verze, do kterého aktuální verze patří. Příklad: fabrikam-cd |
Release.Deployment.RequestedFor | 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 | ID identity, která aktivovala (spustila) probíhající nasazení. Příklad: 2f435d07-769f-4e46-849d-10d1ab9ba6ab |
Release.DeploymentID | ID nasazení. Jedinečné pro každou úlohu. Příklad: 254 |
Release.DeployPhaseID | ID fáze, ve které je spuštěné nasazení. Příklad: 127 |
Release.EnvironmentId | ID instance fáze ve vydané verzi, do které aktuálně probíhá nasazení. Příklad: 276 |
Release.EnvironmentName | Název fáze, do které právě probíhá nasazení. Příklad: Dev |
Release.EnvironmentUri | Identifikátor URI instance fáze ve vydané verzi, 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 |
Release.Reason | 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í se spustilo ručně.None – důvod nasazení nebyl zadán.Schedule – vydání začalo podle plánu. |
Release.ReleaseDescription | Textový popis uvedený v době vydání. Příklad: Critical security patch |
Release.ReleaseId | Identifikátor aktuálního záznamu verze. Příklad: 118 |
Release.ReleaseName | Název aktuální verze Příklad: Release-47 |
Release.ReleaseUri | Identifikátor 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 |
Release.RequestedFor | Zobrazovaný název identity, která aktivovala vydání. Příklad: Mateo Escobedo |
Release.RequestedForEmail | E-mailová adresa identity, která aktivovala vydá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ý aktivoval vydání. Tato hodnota je prázdná, pokud byla vydaná verze naplánována nebo aktivována ručně. Příklad: fabrikam\_app |
Proměnné fáze vydání
Název proměnné | Popis |
---|---|
Release.Environment. {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 agentů. Pravděpodobně se bude lišit od názvu 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 vyžaduje stažení artefaktů do agenta. 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 vydání. 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 vydání. 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 úlohách skupiny nasazení. Příklad: 1 |
Proměnné artefaktů vydané verze
Pro každý artefakt, na který odkazuje verze, 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á.
{alias}
Zástupný symbol nahraďte hodnotou, kterou jste zadali pro alias zdroje artefaktů nebo výchozí hodnotou vygenerovanou pro kanál verze.
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}. Id sestavení | 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ábranch | Ú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 | Potvrzení, které bylo vytvořeno. 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 žádosti o přijetí změn. Tato proměnná se inicializuje pouze v případě, že se vydání aktivuje tokem žádosti o přijetí změn. 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 vydání aktivuje tokem žádosti o přijetí změn. Příklady: Azure Pipelines: main |
Proměnné primárního artefaktu
Pokud v kanálech verze Classic používáte více artefaktů, můžete ho 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}. Id sestavení |
Build.BuildURI | Release.Artifacts. {Alias primárního artefaktu}. BuildURI |
Build.SourceBranch | Release.Artifacts. {Alias primárního artefaktu}. Zdrojovábranch |
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 v kanálu verze 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 ASPNET4.CI jako jeho alias, použili $(Release.Artifacts.ASPNET4.CI.DefinitionName)
byste .
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.
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é kanálu verze: Pomocí proměnných kanálu verze můžete sdílet hodnoty napříč všemi fázemi v rámci kanálu verze. 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é kanálu verze. Na stránce Proměnné kanálu nastavte rozevírací seznam Rozsah na Release při přidávání proměnné.
Proměnné fáze: Pomocí proměnných fáze můžete sdílet hodnoty v rámci konkrétní fáze kanálu verze. 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é kanálu verze. Na stránce Proměnné kanálu nastavte rozevírací seznam Obor 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 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í proměnnou cesty v agentu Windows, přepíše se proměnná $env:Path , která může bránit správnému spuště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 kanálem ve stejném oboru (např. úloha nebo fáze) můžou 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
.
- Ve Windows přejděte k této proměnné 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
sauce
Nastavení proměnných secret.Sauce
@echo ##vso[task.setvariable variable=sauce]crushed tomatoes
@echo ##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic
Čtení proměnných
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
Vyberte Kanály vydaných>verzí a pak vyberte kanál verze.
Otevřete souhrnné zobrazení pro vaši verzi a vyberte fázi, kterou vás zajímá. V seznamu kroků zvolte Inicializovat úlohu.
Tím se otevřou protokoly pro tento krok. Posuňte se dolů a zobrazte hodnoty používané agentem pro tuto úlohu.
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 celou verzi, přidejte proměnnou s názvem
System.Debug
s hodnotoutrue
na kartu Proměnné kanálu verze.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 hodnotoutrue
na kartu Proměnné .Případně vytvořte skupinu proměnných obsahující proměnnou s názvem
System.Debug
s hodnotoutrue
a propojte tuto skupinu proměnných s kanálem verze.
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.