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)
.
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
.
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
Otwórz widok potoków podsumowania wydania i wybierz interesujący Cię etap. Na liście kroków wybierz pozycję Inicjowanie zadania.
Spowoduje to otwarcie dziennika dla tego kroku. Przewiń w dół, aby wyświetlić wartości używane przez agenta dla tego zadania.
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 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:
- Agent systemu Windows przy użyciu zadania skryptu usługi Batch lub zadania skryptu programu PowerShell.
- Agent systemu macOS lub Linux przy użyciu zadania skryptu powłoki.
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)
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla