Klasyczne zmienne wydań i artefaktów

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Klasyczne zmienne wydania i artefakty to wygodny sposób wymiany i transportu danych w potoku. Każda zmienna jest przechowywana jako ciąg, a jej wartość może zmieniać się między przebiegami potoku.

Zmienne różnią się od parametrów środowiska uruchomieniowego, które są dostępne tylko w czasie analizowania szablonu.

Podczas tworzenia zadań wdrażania aplikacji na każdym etapie procesów ciągłej integracji/ciągłego wdrażania metodyki DevOps zmienne ułatwiają wykonywanie następujących czynności:

  • Zdefiniuj jeden raz bardziej ogólny potok wdrażania, a następnie dostosuj go łatwo dla każdego etapu. Na przykład zmienną można użyć do reprezentowania parametry połączenia na potrzeby wdrożenia internetowego, a wartość tej zmiennej można zmienić z jednego etapu na inny. Są to zmienne niestandardowe.

  • Użyj informacji o kontekście konkretnego wydania, etapu, artefaktów lub agenta , w którym jest uruchamiany potok wdrażania. Na przykład skrypt może potrzebować dostępu do lokalizacji kompilacji, aby ją pobrać, lub do katalogu roboczego agenta w celu utworzenia plików tymczasowych. Są to zmienne domyślne.

Uwaga

Aby uzyskać więcej szczegółów, zobacz Temat Potoki YAML, zobacz zmienne zdefiniowane przez użytkownika i wstępnie zdefiniowane zmienne .

Zmienne domyślne

Informacje o kontekście wykonywania są udostępniane do uruchamiania zadań za pomocą zmiennych domyślnych. Zadania i skrypty mogą używać tych zmiennych do znajdowania informacji o systemie, wydaniu, etapie lub agencie, w których działają. Z wyjątkiem pliku System.Debug te zmienne są tylko do odczytu, a ich wartości są automatycznie ustawiane przez system. Niektóre z najbardziej znaczących zmiennych opisano w poniższych tabelach. Aby wyświetlić pełną listę, zobacz Wyświetlanie bieżących wartości wszystkich zmiennych.

Napiwek

Możesz wyświetlić bieżące wartości wszystkich zmiennych dla wydania i użyć zmiennej domyślnej, aby uruchomić wydanie w trybie debugowania.

System

Nazwa zmiennej opis
System.TeamFoundationServerUri Adres URL połączenia usługi w usłudze Azure Pipelines. Użyj tego z poziomu skryptów lub zadań, aby wywołać interfejsy API REST usługi Azure Pipelines.

Przykład: https://fabrikam.vsrm.visualstudio.com/
System.TeamFoundationCollectionUri Adres URL kolekcji Team Foundation lub usługi Azure Pipelines. Użyj tego z poziomu skryptów lub zadań, aby wywołać interfejsy API REST w innych usługach, takich jak kontrola kompilacji i wersji.

Przykład: https://dev.azure.com/fabrikam/
System.CollectionId Identyfikator kolekcji, do której należy ta kompilacja lub wydanie.

Przykład: 6c6f3423-1c84-4625-995a-f7f143a1e43d
System.DefinitionId Identyfikator potoku wydania, do którego należy bieżąca wersja.

Przykład: 1
System.TeamProject Nazwa projektu, do którego należy ta kompilacja lub wydanie.

Przykład: Fabrikam
System.TeamProjectId Identyfikator projektu, do którego należy ta kompilacja lub wydanie.

Przykład: 79f5c12e-3337-4151-be41-a268d2c73344
System.ArtifactsDirectory Katalog, do którego artefakty są pobierane podczas wdrażania wydania. Katalog zostanie wyczyszczone przed każdym wdrożeniem, jeśli wymaga pobrania artefaktów do agenta. Takie same jak Agent.ReleaseDirectory i System.DefaultWorkingDirectory.

Przykład: C:\agent\_work\r1\a
System.DefaultWorkingDirectory Katalog, do którego artefakty są pobierane podczas wdrażania wydania. Katalog zostanie wyczyszczone przed każdym wdrożeniem, jeśli wymaga pobrania artefaktów do agenta. Tak samo jak Agent.ReleaseDirectory i System.ArtifactsDirectory.

Przykład: C:\agent\_work\r1\a
System.WorkFolder Katalog roboczy dla tego agenta, w którym są tworzone podfoldery dla każdej kompilacji lub wydania. Tak samo jak Agent.RootDirectory i Agent.WorkFolder.

Przykład: C:\agent\_work
System.Debug Jest to jedyna zmienna systemowa, która może być ustawiana przez użytkowników. Ustaw wartość true, aby uruchomić wydanie w trybie debugowania, aby ułatwić znajdowanie błędów.

Przykład: true

Zwolnij

Nazwa zmiennej opis
Release.AttemptNumber Liczba wdrożeń tej wersji na tym etapie.

Przykład: 1
Release.DefinitionEnvironmentId Identyfikator etapu w odpowiednim potoku wydania.

Przykład: 1
Release.DefinitionId Identyfikator potoku wydania, do którego należy bieżąca wersja.

Przykład: 1
Release.DefinitionName Nazwa potoku wydania, do którego należy bieżąca wersja.

Przykład: fabrikam-cd
Release.Deployment.RequestedFor Nazwa wyświetlana tożsamości, która wyzwoliła (uruchomiono) wdrożenie w toku.

Przykład: Mateo Escobedo
Release.Deployment.RequestedForEmail Adres e-mail tożsamości, która wyzwoliła (uruchomiono) wdrożenie w toku.

Przykład: mateo@fabrikam.com
Release.Deployment.RequestedForId Identyfikator tożsamości, która wyzwoliła (uruchomiono) wdrożenie w toku.

Przykład: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.DeploymentID Identyfikator wdrożenia. Unikatowe na zadanie.

Przykład: 254
Release.DeployPhaseID Identyfikator fazy, w której jest uruchomione wdrożenie.

Przykład: 127
Release.EnvironmentId Identyfikator wystąpienia etapu w wydaniu, do którego wdrożenie jest obecnie w toku.

Przykład: 276
Release.EnvironmentName Nazwa etapu, do którego wdrożenie jest obecnie w toku.

Przykład: Dev
Release.EnvironmentUri Identyfikator URI wystąpienia etapu w wydaniu, do którego wdrożenie jest obecnie w toku.

Przykład: vstfs://ReleaseManagement/Environment/276
Release.Environments. {nazwa-etapu}.status Stan wdrożenia etapu.

Przykład: InProgress
Release.PrimaryArtifactSourceAlias Alias podstawowego źródła artefaktu

Przykład: fabrikam\_web
Release.Reason Przyczyna wdrożenia. Obsługiwane wartości to:
ContinuousIntegration — wydanie zostało uruchomione w ramach ciągłego wdrażania po zakończeniu kompilacji.
Manual — wersja została uruchomiona ręcznie.
None — nie określono przyczyny wdrożenia.
Schedule — wydanie zaczęło się od harmonogramu.
Release.ReleaseDescription Opis tekstu podany w momencie wydania.

Przykład: Critical security patch
Release.ReleaseId Identyfikator bieżącego rekordu wydania.

Przykład: 118
Release.ReleaseName Nazwa bieżącej wersji.

Przykład: Release-47
Release.ReleaseUri Identyfikator URI bieżącej wersji.

Przykład: vstfs://ReleaseManagement/Release/118
Release.ReleaseWebURL Adres URL tej wersji.

Przykład: https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary
Release.RequestedFor Nazwa wyświetlana tożsamości, która wyzwoliła wydanie.

Przykład: Mateo Escobedo
Release.RequestedForEmail Adres e-mail tożsamości, która wyzwoliła wydanie.

Przykład: mateo@fabrikam.com
Release.RequestedForId Identyfikator tożsamości, która wyzwoliła wydanie.

Przykład: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.SkipArtifactsDownload Wartość logiczna określająca, czy pominąć pobieranie artefaktów do agenta.

Przykład: FALSE
Release.TriggeringArtifact.Alias Alias artefaktu, który wyzwolił wydanie. Jest to puste, gdy wydanie zostało zaplanowane lub wyzwolone ręcznie.

Przykład: fabrikam\_app

Etap wydania

Nazwa zmiennej opis
Release.Environments. {nazwa etapu}. Stan Stan wdrożenia tej wersji w określonym etapie.

Przykład: NotStarted

Agent

Nazwa zmiennej opis
Agent.Name Nazwa agenta zarejestrowana w puli agentów. Prawdopodobnie różni się to od nazwy komputera.

Przykład: fabrikam-agent
Agent.MachineName Nazwa komputera, na którym skonfigurowano agenta.

Przykład: fabrikam-agent
Agent.Version Wersja oprogramowania agenta.

Przykład: 2.109.1
Agent.JobName Nazwa uruchomionego zadania, takiego jak wydanie lub kompilacja.

Przykład: Release
Agent.HomeDirectory Folder, w którym zainstalowano agenta. Ten folder zawiera kod i zasoby agenta.

Przykład: C:\agent
Agent.ReleaseDirectory Katalog, do którego artefakty są pobierane podczas wdrażania wydania. Katalog zostanie wyczyszczone przed każdym wdrożeniem, jeśli wymaga pobrania artefaktów do agenta. Tak samo jak System.ArtifactsDirectory i System.DefaultWorkingDirectory.

Przykład: C:\agent\_work\r1\a
Agent.RootDirectory Katalog roboczy dla tego agenta, w którym są tworzone podfoldery dla każdej kompilacji lub wydania. Tak samo jak Agent.WorkFolder i System.WorkFolder.

Przykład: C:\agent\_work
Agent.WorkFolder Katalog roboczy dla tego agenta, w którym są tworzone podfoldery dla każdej kompilacji lub wydania. Tak samo jak Agent.RootDirectory i System.WorkFolder.

Przykład: C:\agent\_work
Agent.DeploymentGroupId Identyfikator grupy wdrożenia, w ramach których agent jest zarejestrowany. Jest to dostępne tylko w zadaniach grupy wdrożeń.

Przykład: 1

Ogólny artefakt

Dla każdego artefaktu, do którego odwołuje się wydanie, można użyć następujących zmiennych artefaktu. Nie wszystkie zmienne mają znaczenie dla każdego typu artefaktu. W poniższej tabeli wymieniono domyślne zmienne artefaktu i przedstawiono przykłady wartości, które mają w zależności od typu artefaktu. Jeśli przykład jest pusty, oznacza to, że zmienna nie jest wypełniana dla tego typu artefaktu.

{alias} Zastąp symbol zastępczy wartością określoną dla aliasu artefaktu lub wartością domyślną wygenerowaną dla potoku wydania.

Nazwa zmiennej opis
Release.Artifacts. {alias}. Identyfikator definicji Identyfikator potoku kompilacji lub repozytorium.

Przykład usługi Azure Pipelines: 1
Przykład usługi GitHub: fabrikam/asp
Release.Artifacts. {alias}. DefinitionName Nazwa potoku kompilacji lub repozytorium.

Przykład usługi Azure Pipelines: fabrikam-ci
Przykład kontrolera TFVC: $/fabrikam
Przykład usługi Git: fabrikam
Przykład usługi GitHub: fabrikam/asp (main)
Release.Artifacts. {alias}. Numer kompilacji Numer kompilacji lub identyfikator zatwierdzenia.

Przykład usługi Azure Pipelines: 20170112.1
Przykład usługi Jenkins/TeamCity: 20170112.1
Przykład kontrolera TFVC: Changeset 3
Przykład usługi Git: 38629c964
Przykład usługi GitHub: 38629c964
Release.Artifacts. {alias}. BuildId Identyfikator kompilacji.

Przykład usługi Azure Pipelines: 130
Przykład usługi Jenkins/TeamCity: 130
Przykład usługi GitHub: 38629c964d21fe405ef830b7d0220966b82c9e11
Release.Artifacts. {alias}. Identyfikator BUILDURI Adres URL kompilacji.

Przykład usługi Azure Pipelines: vstfs://build-release/Build/130
Przykład usługi GitHub: https://github.com/fabrikam/asp
Release.Artifacts. {alias}. ŹródłoBranch Pełna ścieżka i nazwa gałęzi, z której utworzono źródło.

Przykład usługi Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. SourceBranchName Nazwa tylko gałęzi, z której utworzono źródło.

Przykład usługi Azure Pipelines: main
Release.Artifacts. {alias}. SourceVersion Skompilowane zatwierdzenie.

Przykład usługi Azure Pipelines: bc0044458ba1d9298cdc649cb5dcf013180706f7
Release.Artifacts. {alias}. Repository.Provider Typ repozytorium, z którego utworzono źródło.

Przykład usługi Azure Pipelines: Git
Release.Artifacts. {alias}. RequestedForID Identyfikator konta, które wyzwoliło kompilację.

Przykład usługi Azure Pipelines: 2f435d07-769f-4e46-849d-10d1ab9ba6ab
Release.Artifacts. {alias}. RequestedFor Nazwa konta, które zażądało kompilacji.

Przykład usługi Azure Pipelines: Mateo Escobedo
Release.Artifacts. {alias}. Typu Typ źródła artefaktu, taki jak Kompilacja.

Przykład usługi Azure Pipelines: Build
Przykład narzędzia Jenkins: Jenkins
Przykład usługi TeamCity: TeamCity
Przykład kontrolera TFVC: TFVC
Przykład usługi Git: Git
Przykład usługi GitHub: GitHub
Release.Artifacts. {alias}. PullRequest.TargetBranch Pełna ścieżka i nazwa gałęzi, która jest elementem docelowym żądania ściągnięcia. Ta zmienna jest inicjowana tylko wtedy, gdy wydanie jest wyzwalane przez przepływ żądania ściągnięcia.

Przykład usługi Azure Pipelines: refs/heads/main
Release.Artifacts. {alias}. PullRequest.TargetBranchName Nazwa tylko gałęzi, która jest elementem docelowym żądania ściągnięcia. Ta zmienna jest inicjowana tylko wtedy, gdy wydanie jest wyzwalane przez przepływ żądania ściągnięcia.

Przykład usługi Azure Pipelines: main

Zobacz też Alias źródła artefaktu

Podstawowy artefakt

Jeden z artefaktów można wyznaczyć jako podstawowy artefakt w potoku wydania. W przypadku wyznaczonego podstawowego artefaktu usługa Azure Pipelines wypełnia następujące zmienne.

Nazwa zmiennej Tak samo jak
Build.DefinitionId Release.Artifacts. {Podstawowy alias artefaktu}. Identyfikator definicji
Build.DefinitionName Release.Artifacts. {Podstawowy alias artefaktu}. DefinitionName
Build.BuildNumber Release.Artifacts. {Podstawowy alias artefaktu}. Numer kompilacji
Build.BuildId Release.Artifacts. {Podstawowy alias artefaktu}. BuildId
Build.BuildURI Release.Artifacts. {Podstawowy alias artefaktu}. Identyfikator BUILDURI
Build.SourceBranch Release.Artifacts. {Podstawowy alias artefaktu}. ŹródłoBranch
Build.SourceBranchName Release.Artifacts. {Podstawowy alias artefaktu}. SourceBranchName
Build.SourceVersion Release.Artifacts. {Podstawowy alias artefaktu}. SourceVersion
Build.Repository.Provider Release.Artifacts. {Podstawowy alias artefaktu}. Repository.Provider
Build.RequestedForID Release.Artifacts. {Podstawowy alias artefaktu}. RequestedForID
Build.RequestedFor Release.Artifacts. {Podstawowy alias artefaktu}. RequestedFor
Build.Type Release.Artifacts. {Podstawowy alias artefaktu}. Typu
Build.PullRequest.TargetBranch Release.Artifacts. {Podstawowy alias artefaktu}. PullRequest.TargetBranch
Build.PullRequest.TargetBranchName Release.Artifacts. {Podstawowy alias artefaktu}. PullRequest.TargetBranchName

Używanie zmiennych domyślnych

Zmienne domyślne można używać na dwa sposoby — jako parametry do zadań w potoku wydania lub w skryptach.

Możesz bezpośrednio użyć zmiennej domyślnej jako danych wejściowych zadania. Aby na przykład przekazać Release.Artifacts.{Artifact alias}.DefinitionName źródło artefaktu, którego alias jest ASPNET4.CI do zadania, należy użyć polecenia $(Release.Artifacts.ASPNET4.CI.DefinitionName).

Używanie zmiennych artefaktu w argumentach do zadania skryptu programu PowerShell

Aby użyć zmiennej domyślnej w skrypcie, należy najpierw zastąpić wartością . w domyślnych nazwach _zmiennych . Aby na przykład wydrukować wartość zmiennej Release.Artifacts.{Artifact alias}.DefinitionName artefaktu dla źródła artefaktu, którego alias jest ASPNET4.CI w skry skryptzie programu PowerShell, należy użyć polecenia $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME.

Używanie zmiennych artefaktów w wbudowanym skryscie programu PowerShell

Należy pamiętać, że oryginalna nazwa aliasu ASPNET4.CIźródła artefaktu , jest zastępowana przez ASPNET4_CI.

Wyświetlanie bieżących wartości wszystkich zmiennych

  1. Otwórz widok potoków podsumowania wydania i wybierz interesujący Cię etap. Na liście kroków wybierz pozycję Inicjowanie zadania.

    Otwieranie dziennika dla wydania

  2. Spowoduje to otwarcie dziennika dla tego kroku. Przewiń w dół, aby wyświetlić wartości używane przez agenta dla tego zadania.

    Wyświetlanie wartości zmiennych w wydaniu

Uruchamianie wydania w trybie debugowania

Pokaż dodatkowe informacje jako wydanie jest wykonywane i w plikach dziennika, uruchamiając całą wersję lub tylko zadania w indywidualnym etapie wydania w trybie debugowania. Może to pomóc w rozwiązywaniu problemów i niepowodzeń.

  • Aby zainicjować tryb debugowania dla całej wersji, dodaj zmienną o nazwie System.Debug z wartością true na karcie Zmienne potoku wydania.

  • Aby zainicjować tryb debugowania dla pojedynczego etapu, otwórz okno dialogowe Konfigurowanie etapu z menu skrótów etapu i dodaj zmienną o nazwie System.Debug z wartością true na karcie Zmienne .

  • Alternatywnie utwórz grupę zmiennych zawierającą zmienną o nazwie System.Debug z wartością true i połącz tę grupę zmiennych z potokiem wydania.

Napiwek

Jeśli wystąpi błąd związany z połączeniem usługi Azure RM, zobacz Instrukcje: rozwiązywanie problemów z połączeniami usługi Azure Resource Manager.

Zmienne niestandardowe

Zmienne niestandardowe można definiować w różnych zakresach.

  • Udostępniaj wartości we wszystkich definicjach w projekcie przy użyciu grup zmiennych. Wybierz grupę zmiennych, jeśli chcesz użyć tych samych wartości we wszystkich definicjach, etapach i zadaniach w projekcie, a następnie chcesz mieć możliwość zmiany wartości w jednym miejscu. Grupy zmiennych można definiować i zarządzać nimi na karcie Biblioteka .

  • Udostępniaj wartości we wszystkich etapach przy użyciu zmiennych potoku wydania. Wybierz zmienną potoku wydania, jeśli musisz użyć tej samej wartości we wszystkich etapach i zadaniach w potoku wydania i chcesz mieć możliwość zmiany wartości w jednym miejscu. Te zmienne można definiować i zarządzać nimi na karcie Zmienne w potoku wydania. Na stronie Zmienne potoku otwórz listę rozwijaną Zakres i wybierz pozycję "Wydanie". Domyślnie podczas dodawania zmiennej jest ustawiona wartość Zakres wydania.

  • Udostępniaj wartości we wszystkich zadaniach w ramach jednego określonego etapu przy użyciu zmiennych etapu. Użyj zmiennej na poziomie etapu dla wartości, które różnią się od etapu do etapu (i są takie same dla wszystkich zadań w etapie). Te zmienne można definiować i zarządzać nimi na karcie Zmienne potoku wydania. Na stronie Zmienne potoku otwórz listę rozwijaną Zakres i wybierz wymagany etap. Po dodaniu zmiennej ustaw wartość Zakres na odpowiednie środowisko.

Używanie zmiennych niestandardowych w projekcie, potoku wydania i zakresie etapu ułatwia:

  • Unikaj duplikowania wartości, co ułatwia aktualizowanie wszystkich wystąpień jako jednej operacji.

  • Przechowuj poufne wartości w sposób, który nie może być widoczny ani zmieniany przez użytkowników potoków wydania. Wyznaczanie właściwości konfiguracji jako bezpiecznej (tajnej) zmiennej przez wybranie Kłódka ikony (kłódki) obok zmiennej.

    Ważne

    Wartości ukrytych (tajnych) zmiennych są bezpiecznie przechowywane na serwerze i nie mogą być wyświetlane przez użytkowników po ich zapisaniu. Podczas wdrażania usługa wydania usługi Azure Pipelines odszyfrowuje te wartości podczas odwoływania się do zadań podrzędnych i przekazuje je do agenta za pośrednictwem bezpiecznego kanału HTTPS.

Uwaga

Tworzenie zmiennych niestandardowych może zastąpić standardowe zmienne. Na przykład zmienna środowiskowa Ścieżka programu PowerShell. Jeśli tworzysz zmienną niestandardową Path na agencie systemu Windows, zastąpi $env:Path zmienną, a program PowerShell nie będzie mógł uruchomić.

Używanie zmiennych niestandardowych

Aby użyć zmiennych niestandardowych w zadaniach kompilacji i wydania, po prostu ująć nazwę zmiennej w nawiasy i poprzedzić ją znakiem $ . Jeśli na przykład masz zmienną o nazwie adminUserName, możesz wstawić bieżącą wartość tej zmiennej do parametru zadania jako $(adminUserName).

Uwaga

Zmienne w różnych grupach połączonych z potokiem w tym samym zakresie (na przykład zadanie lub etap) będą zderzać się, a wynik może być nieprzewidywalny. Upewnij się, że używasz różnych nazw zmiennych we wszystkich grupach zmiennych.

Definiowanie i modyfikowanie zmiennych w skryfcie

Aby zdefiniować lub zmodyfikować zmienną ze skryptu, użyj polecenia rejestrowania task.setvariable . Należy pamiętać, że zaktualizowana wartość zmiennej jest ograniczona do wykonywanego zadania i nie przepływa między zadaniami ani etapami. Nazwy zmiennych są przekształcane na wielkie litery, a znaki "." i "" są zastępowane znakiem "_".

Na przykład, Agent.WorkFolder staje się AGENT_WORKFOLDER. W systemie Windows uzyskujesz dostęp do tego jako %AGENT_WORKFOLDER% lub $env:AGENT_WORKFOLDER. W systemach Linux i macOS należy użyć polecenia $AGENT_WORKFOLDER.

Napiwek

Skrypt można uruchomić na:

Skrypt usługi Batch

sauce Ustawianie zmiennych i secret.Sauce

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

Odczytywanie zmiennych

Argumenty

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

Skrypt

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

Dane wyjściowe konsoli z odczytywania zmiennych:

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)