Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
L'emploi de variables dans les pipelines de mise en production classique constitue un moyen pratique d’échanger et de transporter des données dans votre pipeline. Chaque variable est stockée sous forme de chaîne et sa valeur peut changer entre les exécutions du pipeline.
Contrairement aux paramètres runtime, qui ne sont disponibles qu’au moment de l’analyse des modèles, les variables dans les pipelines de mise en production classiques sont accessibles tout au long du processus de déploiement.
Lorsque vous configurez des tâches pour déployer votre application à chaque étape de votre pipeline de mise en production Classique, les variables peuvent vous aider à :
Pour simplifier la personnalisation : définissez une fois un pipeline de déploiement générique, puis adaptez-le facilement aux différentes phases. Par exemple, utilisez une variable représentant une chaîne de connexion pour le déploiement web, et ajustez-en la valeur selon les besoins de chaque phase. Ces variables sont appelées variables personnalisées.
Pour tirer parti des informations contextuelles : accédez aux détails du contexte de mise en production, comme une phase, un artefact ou l’agent qui exécute le déploiement. Par exemple, vos scripts peuvent avoir besoin de l’emplacement de la build pour son téléchargement, ou du répertoire de travail de l’agent pour créer des fichiers temporaires. Ces variables sont appelées variables par défaut.
Remarque
Pour les pipelines YAML, consultez Variables définies par l’utilisateur et Variables prédéfinies pour plus d’informations.
Conseil
Vous pouvez utiliser l’IA pour vous aider à effectuer cette tâche plus loin dans cet article, ou voir Activer l’aide à l’IA avec Azure DevOps MCP Server pour commencer.
Les variables par défaut
Les variables par défaut fournissent des informations essentielles sur le contexte d’exécution de vos tâches et scripts en cours d’exécution. Ces variables vous donnent accès à des détails sur le système, la version, l’étape ou l’agent dans lequel ils s’exécutent.
À l’exception de System.Debug, les variables par défaut sont en lecture seule et le système définit automatiquement leurs valeurs.
Certaines des principales variables sont décrites dans les tableaux ci-dessous. Pour afficher la liste complète, consultez Afficher les valeurs actuelles de toutes les variables.
Variables système
| Nom de la variable | Description |
|---|---|
| System.TeamFoundationServerUri | URL de la connexion de service dans Azure Pipelines. Utilisez cette variable dans vos scripts ou tâches pour appeler des API REST Azure Pipelines. Exemple : https://fabrikam.vsrm.visualstudio.com/ |
| System.TeamFoundationCollectionUri | URL de la collection Team Foundation ou d’Azure Pipelines. Utilisez cette variable dans vos scripts ou tâches pour appeler des API REST sur d’autres services tels que build et contrôle de version. Exemple : https://dev.azure.com/fabrikam/ |
| System.CollectionId | L’identifiant de la collection à laquelle appartient cette build ou cette version. Exemple : 6c6f3423-1c84-4625-995a-f7f143a1e43d |
| System.DefinitionId | L’ID du pipeline de mise en production auquel la version actuelle appartient. Exemple : 1 |
| System.TeamProject | Le nom du projet auquel cette version ou cette release appartient. Exemple : Fabrikam |
| System.TeamProjectId | L’identifiant du projet auquel cette version ou cette mise en production appartient. Exemple : 79f5c12e-3337-4151-be41-a268d2c73344 |
| System.ArtifactsDirectory | Répertoire dans lequel le pipeline télécharge les artefacts pendant le déploiement d’une version. Le pipeline efface le répertoire avant chaque déploiement si des artefacts doivent être téléchargés sur l’agent. Identique à Agent.ReleaseDirectory et System.DefaultWorkingDirectory.Exemple : C:\agent\_work\r1\a |
| System.DefaultWorkingDirectory | Répertoire dans lequel le pipeline télécharge les artefacts pendant le déploiement d’une version. Le pipeline efface le répertoire avant chaque déploiement si des artefacts doivent être téléchargés sur l’agent. Identique à Agent.ReleaseDirectory et System.ArtifactsDirectory.Exemple : C:\agent\_work\r1\a |
| System.WorkFolder | Répertoire de travail de cet agent, où le pipeline crée des sous-dossiers pour chaque compilation ou version. Identique à Agent.RootDirectory et Agent.WorkFolder.Exemple : C:\agent\_work |
| System.Debug | Il s’agit de la seule variable système que les utilisateurs peuvent définir. Définissez cette variable pour trueexécuter la version en mode débogage pour faciliter la recherche d’erreurs.Exemple : true |
Variables de version
| Nom de la variable | Description |
|---|---|
| Release.AttemptNumber | Nombre de fois où cette version est déployée à cette étape. Exemple : 1 |
| Release.DefinitionEnvironmentId | ID de la phase dans le pipeline de mise en production correspondant. Exemple : 1 |
| Release.DefinitionId | L’ID du pipeline de mise en production auquel la version actuelle appartient. Exemple : 1 |
| Release.DefinitionName | Nom du pipeline de publication auquel appartient la version actuelle. Exemple : fabrikam-cd |
| Release.Deployment.RequestedFor | Nom d’affichage de l’identité qui a déclenché (démarré) le déploiement en cours. Exemple : Mateo Escobedo |
| Release.Deployment.RequestedForEmail | Adresse e-mail de l’identité qui a déclenché (démarré) le déploiement en cours. Exemple : mateo@fabrikam.com |
| Release.Deployment.RequestedForId | L’identifiant de l’identité qui a déclenché le déploiement actuellement en cours. Exemple : 2f435d07-769f-4e46-849d-10d1ab9ba6ab |
| Release.DeploymentID | L’identifiant du déploiement. Unique par tâche. Exemple : 254 |
| Release.DeployPhaseID | ID de la phase où le déploiement est en cours d’exécution. Exemple : 127 |
| Release.EnvironmentId | L’ID de l’instance de l’étape dans une version où le déploiement est en cours. Exemple : 276 |
| Release.EnvironmentName | Nom de la phase du déploiement en cours. Exemple : Dev |
| Release.EnvironmentUri | L’URI de l’instance d’étape dans une version pour laquelle un déploiement est actuellement en cours. Exemple : vstfs://ReleaseManagement/Environment/276 |
| Release.Environments.{stage-name}.status | État du déploiement de la phase. Exemple : InProgress |
| Release.PrimaryArtifactSourceAlias | Alias de la source d’artefact principal. Exemple : fabrikam\_web |
| Release.Reason | Motif du déploiement. Les valeurs prises en charge sont les suivantes :ContinuousIntegration : la mise en production a démarré dans le déploiement continu une fois la build terminée.Manual : la mise en production a été démarrée manuellement.None - la raison du déploiement n’est pas spécifiée.Schedule - la mise en production a démarré selon une planification. |
| Release.ReleaseDescription | Description textuelle fournie au moment de la mise en production. Exemple : Critical security patch |
| Release.ReleaseId | L’identificateur de la fiche de version actuelle. Exemple : 118 |
| Release.ReleaseName | Nom de la version actuelle. Exemple : Release-47 |
| Release.ReleaseUri | L’URI de la version actuelle. Exemple : vstfs://ReleaseManagement/Release/118 |
| Release.ReleaseWebURL | L’URL de cette version. Exemple : https://dev.azure.com/fabrikam/f3325c6c/_release?releaseId=392&_a=release-summary |
| Release.DemandéPour | Nom d’affichage de l’identité ayant déclenché la mise en production. Exemple : Mateo Escobedo |
| Release.RequestedForEmail | Adresse e-mail de l’identité ayant déclenché la mise en production. Exemple : mateo@fabrikam.com |
| Release.RequestedForId | L’ID de l’identité qui a déclenché le déploiement. Exemple : 2f435d07-769f-4e46-849d-10d1ab9ba6ab |
| Release.SkipArtifactsDownload | Valeur booléenne qui spécifie s’il faut ignorer le téléchargement d’artefacts vers l’agent. Exemple : FALSE |
| Release.TriggeringArtifact.Alias | L’alias de l’artefact qui a déclenché la publication. Cette valeur est vide lorsque la mise en production est planifiée ou déclenchée manuellement. Exemple : fabrikam\_app |
Variables de la phase de mise en production
| Nom de la variable | Description |
|---|---|
| Release.Environments. {nom de l’étape}. Statut | Le statut de déploiement de cette version au sein d’une étape donnée. Exemple : NotStarted |
Variables de l’agent
| Nom de la variable | Description |
|---|---|
| Agent.Name | Nom de l’agent inscrit auprès du pool d’agents. Ce nom est probablement différent du nom de l’ordinateur. Exemple : fabrikam-agent |
| Agent.MachineName | Nom de l’ordinateur sur lequel l’agent est configuré. Exemple : fabrikam-agent |
| Agent.Version | Version du logiciel de l’agent. Exemple : 2.109.1 |
| Agent.JobName | Nom de la tâche qui s'exécute, telle que Release ou Build. Exemple : Release |
| Agent.HomeDirectory | Dossier dans lequel l’agent est installé. Ce dossier contient le code et les ressources de l’agent. Exemple : C:\agent |
| Agent.ReleaseDirectory | Répertoire dans lequel le déploiement d’une version télécharge les artefacts. Le répertoire est vidé avant chaque déploiement s’il nécessite le téléchargement d’artefacts sur l’agent. C’est le même que System.ArtifactsDirectory et System.DefaultWorkingDirectory.Exemple : C:\agent\_work\r1\a |
| Agent.RootDirectory | Le répertoire de travail de cet agent, où des sous-dossiers sont créés pour chaque compilation ou version. C’est le même que Agent.WorkFolder et System.WorkFolder.Exemple : C:\agent\_work |
| Agent.WorkFolder | Le répertoire de travail de cet agent, où des sous-dossiers sont créés pour chaque compilation ou mise en production. C’est le même que Agent.RootDirectory et System.WorkFolder.Exemple : C:\agent\_work |
| Agent.DeploymentGroupId | ID du groupe de déploiement auprès lequel l’agent s’inscrit. Cet ID est disponible uniquement dans les tâches de groupe de déploiement. Exemple : 1 |
Variables d’artéfacts de release
Pour chaque artefact que vous référencez dans une version, utilisez les variables d’artefact suivantes. Notez que toutes les variables ne s’appliquent pas à chaque type d’artefact. Le tableau suivant répertorie les variables d’artefact par défaut et fournit des exemples de leurs valeurs en fonction du type d’artefact. Si un exemple est vide, il indique que la variable n’est pas applicable à ce type d’artefact.
Remplacez l’espace {alias} réservé par la valeur que vous spécifiez pour l’alias source de l’artefact ou par la valeur par défaut générée pour le pipeline de mise en production.
| Nom de la variable | Description |
|---|---|
| Release.Artifacts.{alias}.DefinitionId | Identificateur du pipeline ou du référentiel de build. Exemples : Azure Pipelines : 1GitHub : fabrikam/asp |
| Release.Artifacts.{alias}.DefinitionName | Nom du pipeline ou du référentiel de build. Exemples : Azure Pipelines : fabrikam-ciTFVC : $/fabrikamGit : fabrikamGitHub : fabrikam/asp (main) |
| Release.Artifacts.{alias}.BuildNumber | Numéro de build ou identificateur de commit. Exemples : Azure Pipelines : 20170112.1Jenkins : 20170112.1TFVC : Changeset 3Git : 38629c964GitHub : 38629c964 |
| Release.Artifacts.{alias}.BuildId | Identificateur de build. Exemples : Azure Pipelines : 130Jenkins : 130GitHub : 38629c964d21fe405ef830b7d0220966b82c9e11 |
| Release.Artifacts.{alias}.BuildURI | URL de la build. Exemples : Azure Pipelines : vstfs://build-release/Build/130GitHub : https://github.com/fabrikam/asp |
| Release.Artifacts.{alias}.SourceBranch | Chemin d’accès complet et nom de la branche à partir de laquelle la source a été générée. Exemples : Azure Pipelines : refs/heads/main |
| Release.Artifacts.{alias}.SourceBranchName | Nom uniquement de la branche à partir de laquelle la source a été générée. Exemples : Azure Pipelines : main |
| Release.Artifacts.{alias}.SourceVersion | Commit qui a été généré. Exemples : Azure Pipelines : bc0044458ba1d9298cdc649cb5dcf013180706f7 |
| Release.Artifacts.{alias}.Repository.Provider | Type de référentiel à partir duquel la source a été générée. Exemples : Azure Pipelines : Git |
| Release.Artifacts.{alias}.RequestedForID | Identificateur du compte qui a déclenché la build. Exemples : Azure Pipelines : 2f435d07-769f-4e46-849d-10d1ab9ba6ab |
| Release.Artifacts.{alias}.DemandéPour | Nom du compte qui a demandé la build. Exemples : Azure Pipelines : Mateo Escobedo |
| Release.Artifacts.{alias}.Type | Type de source d’artefact, tel que Build. Exemples : Azure Pipelines : BuildJenkins : JenkinsAzure DevOps Services : TFVCGit : GitGitHub : GitHub |
| Release.Artifacts.{alias}.PullRequest.TargetBranch | Le chemin complet et le nom de la branche cible d’une demande de fusion. Cette variable est initialisée uniquement si la publication est déclenchée par un flux de pull request. Exemples : Azure Pipelines : refs/heads/main |
| Release.Artifacts.{alias}.PullRequest.TargetBranchName | Uniquement le nom de la branche cible d’une demande de fusion. Cette variable est initialisée uniquement si la version est déclenchée par un flux de pull request. Exemples : Azure Pipelines : main |
Variables d’artefact principales
Dans les pipelines de mise en production classiques, si vous utilisez plusieurs artefacts, vous pouvez désigner un artefact comme artefact principal. Azure Pipelines remplit ensuite les variables suivantes pour l’artefact principal désigné.
| Nom de la variable | Identique à |
|---|---|
| Build.DefinitionId | Release.Artifacts.{alias de l’artefact principal}.DefinitionId |
| Build.DefinitionName | Release.Artifacts. {Alias d’artefact principal}. DefinitionName |
| Build.BuildNumber | Release.Artifacts.{alias de l’artefact principal}.BuildNumber |
| Build.BuildId | Release.Artifacts. {Alias d’artefact principal}. BuildId |
| Build.BuildURI | Release.Artifacts.{alias de l’artefact principal}.BuildURI |
| Build.SourceBranch | Release.Artifacts. {Alias d’artefact principal}. SourceBranch |
| Build.SourceBranchName | Release.Artifacts. {Alias d’artefact principal}. SourceBranchName |
| Build.SourceVersion | Release.Artifacts. {Alias d’artefact principal}. SourceVersion |
| Build.Repository.Provider | Release.Artifacts.{alias de l’artefact principal}.Repository.Provider |
| Build.RequestedForID | Release.Artifacts.{Alias de l’artefact principal}.RequestedForID |
| Build.RequestedFor | Release.Artifacts.{alias de l’artefact principal}.DemandéPour |
| Build.Type | Release.Artifacts.{alias de l’artefact principal}.Type |
| Build.PullRequest.TargetBranch | Release.Artifacts.{alias de l’artéfact principal}.PullRequest.TargetBranch |
| Build.PullRequest.TargetBranchName | Release.Artifacts. {Alias d’artefact principal}. PullRequest.TargetBranchName |
Utiliser les variables par défaut
Vous pouvez utiliser les variables par défaut de deux manières : en tant que paramètres pour des tâches dans un pipeline de mise en production ou dans vos scripts.
Utilisez une variable par défaut directement comme entrée pour une tâche. Par exemple, pour passer Release.Artifacts.{Artifact alias}.DefinitionName en tant qu’argument à une tâche PowerShell pour un artefact avec ASPNET4.CI comme alias, utilisez $(Release.Artifacts.ASPNET4.CI.DefinitionName).
Pour utiliser une variable par défaut dans votre script, remplacez le . dans les noms de variables par défaut par _. Par exemple, pour imprimer la valeur d’un Release.Artifacts.{Artifact alias}.DefinitionName artefact avec ASPNET4.CI comme alias dans un script PowerShell, utilisez $env:RELEASE_ARTIFACTS_ASPNET4_CI_DEFINITIONNAME. L’alias d’origine, ASPNET4.CI, est remplacé par ASPNET4_CI.
Variables personnalisées
Vous pouvez définir des variables personnalisées à différentes étendues.
Groupes de variables : utilisez-les pour partager des valeurs entre toutes les définitions d’un projet. Cette approche est utile lorsque vous souhaitez utiliser les mêmes valeurs dans les définitions, les étapes et les tâches au sein d’un projet, et les gérer à partir d’un emplacement unique. Les groupes de variables sont définis et gérés dans Pipelines>Bibliothèque.
Variables de pipeline de mise en production : utilisez-les pour partager des valeurs entre toutes les phases d’un pipeline de mise en production. Cette approche est idéale pour les scénarios où vous avez besoin d’une valeur cohérente entre les étapes et les tâches, avec la possibilité de la mettre à jour à partir d’un emplacement unique. Ces variables sont définies et gérées sous l’onglet Variables du pipeline de mise en production. Dans la page Variables de pipeline, ouvrez la liste déroulante Étendue et sélectionnez Mise en production lors de l’ajout d’une variable.
Variables de phase : utilisez-les pour partager des valeurs dans une phase spécifique d’un pipeline de mise en production. Cette approche est utile pour les valeurs qui diffèrent d’une étape à l’autre, mais qui sont cohérentes dans toutes les tâches d’une phase. Ces variables sont définies et gérées sous l’onglet Variables du pipeline de mise en production. Dans la page Variables de pipeline, ouvrez la liste déroulante Étendue et sélectionnez l'environnement approprié lors de l’ajout d’une variable.
En utilisant des variables personnalisées au niveau du projet, du pipeline de mise en production et des niveaux intermédiaires, vous pouvez :
Éviter de dupliquer des valeurs, afin de faciliter la mise à jour de l’ensemble des occurrences en un seul changement.
Sécuriser des valeurs sensibles en les empêchant d’être consultées ou modifiées par des utilisateurs. Pour marquer une variable comme sécurisée (secret), sélectionnez l’icône
en regard de la variable.Important
Les valeurs des variables masquées (secret) sont stockées en toute sécurité sur le serveur et les utilisateurs ne peuvent pas les afficher après leur enregistrement. Pendant le déploiement, Azure Pipelines déchiffre ces valeurs quand les tâches les référencent et les transmet à l’agent via un canal HTTPS sécurisé.
Remarque
La création de variables personnalisées peut écraser les variables standard. Par exemple, si vous définissez une variable Path personnalisée sur un agent Windows, elle remplace la variable $env :Path et peut empêcher PowerShell de s’exécuter correctement.
Utiliser des variables personnalisées
Pour utiliser des variables personnalisées dans vos tâches, placez le nom de la variable entre parenthèses et de le faire précéder d’un caractère $. Par exemple, si vous avez une variable nommée adminUserName, insérez sa valeur actuelle dans une tâche en tant que $(adminUserName).
Remarque
Les variables provenant de différents groupes liés à un pipeline dans la même étendue (par exemple, un travail ou une étape) peuvent entrer en conflit et entraîner des résultats imprévisibles. Pour éviter ce problème, assurez-vous que les variables de tous vos groupes de variables ont des noms uniques.
Définir et modifier vos variables dans un script
Pour définir ou modifier une variable à partir d’un script, utilisez la commande de journalisation task.setvariable. La valeur de la variable mise à jour est limitée au travail en cours d’exécution et ne persiste pas dans les différents travaux ou phases. Veuillez noter que les noms de variables sont transformés en majuscules, et les caractères « . » et « » sont remplacés par « _ ».
Par exemple, Agent.WorkFolder devient AGENT_WORKFOLDER.
- Sous Windows, accédez à cette variable sous la forme
%AGENT_WORKFOLDER%ou$env:AGENT_WORKFOLDER. - Sur Linux et macOS, veuillez utiliser
$AGENT_WORKFOLDER.
Conseil
Vous pouvez exécuter un script :
- Un agent Windows utilisant soit une tâche de script Batch, soit une tâche PowerShell.
- Un agent macOS ou Linux utilisant une tâche de script Shell.
Script de commandes
Définir les variables sauce et secret.Sauce
@echo ##vso[task.setvariable variable=sauce]crushed tomatoes
@echo ##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic
Lire les variables
Arguments
"$(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)
Sortie de console après lecture des variables :
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)
Afficher les valeurs actuelles de l’ensemble des variables
Sélectionnez Pipelines>Mises en production, puis sélectionnez votre pipeline de mise en production.
Ouvrez la vue récapitulative de votre mise en production et sélectionnez la phase qui vous intéresse. Dans la liste des étapes, choisissez Initialiser le travail.
Cette étape ouvre les logs. Faites défiler vers le bas pour afficher les valeurs que l’agent utilise pour ce travail.
Exécuter une version en mode débogage
L’exécution d’une version en mode débogage peut vous aider à diagnostiquer et résoudre les problèmes en affichant des informations supplémentaires pendant l’exécution de la mise en production. Vous pouvez activer le mode débogage pour l’ensemble de la version ou simplement pour les tâches dans une phase de mise en production spécifique.
Pour activer le mode débogage pour l’ensemble de la version, ajoutez une variable nommée
System.Debugavec la valeurtrueà l’onglet Variables du pipeline de mise en production.Pour activer le mode débogage d’une étape spécifique, ouvrez la boîte de dialogue Configurer l’étape à partir du menu contextuel de l’étape et ajoutez une variable nommée
System.Debugavec la valeurtrueà l’onglet Variables .Vous pouvez également créer un groupe de variables contenant une variable nommée
System.Debugdéfinie sur la valeurtrueet lier ce groupe de variables au pipeline de mise en production.
Conseil
Si vous rencontrez une erreur liée aux connexions de service Azure Resource Manager, consultez Guide pratique pour résoudre les problèmes liés aux connexions de service Azure Resource Manager pour plus d’informations.
Utiliser l’IA pour concevoir, valider et résoudre les problèmes des variables de mise en production
Les exemples d’invites suivants pour Copilot Chat vous aident à comprendre la portée des variables et leur ordre de priorité, à concevoir une stratégie de gestion des variables facile à maintenir, à valider l’utilisation actuelle et, si nécessaire, à résoudre les problèmes de résolution des variables. Copiez et collez ces instructions dans Copilot Chat, et remplacez les espaces réservés par vos noms d’étape, de tâche et de variable.
| Tâche | Exemple d’invite |
|---|---|
| Expliquer la priorité des variables | Explain how variable precedence works in this Classic release pipeline across variable groups, release scope, and stage scope, using my variable names as examples. |
| Concevoir une stratégie pour les variables | Propose a naming and scoping convention for Classic release variables in this pipeline so values are clear, reusable, and less likely to conflict. |
| Diagnostiquer le chevauchement de périmètre | In my Classic release pipeline, explain scope overlap for variable <VariableName> and tell me which value wins between release scope and stage scope. |
| Valider le mappage des variables de script | Convert these Classic release variable references to the correct script environment variable names and explain why each one works. |
| Vérifier les conflits entre groupes de variables | Identify potential naming conflicts across linked variable groups and stage variables in this Classic release pipeline, and recommend safer names. |
| Résoudre les problèmes liés à la variable introuvable | Help me troubleshoot this Classic release pipeline error: variable not found for <VariableName>. Check macro syntax, scope, and task context. |
| Résoudre les problèmes de faute de frappe « varialbe introuvable » | I see a "varialbe not found" error in a deployment script. Help me determine whether this is a misspelled variable name, wrong scope, or incorrect environment variable mapping. |
Copilot est alimenté par l’IA, donc les surprises et les erreurs sont possibles. Pour plus d’informations, consultez les FAQ sur l’utilisation générale de Copilot.
Définir les variables
Définir les variables