doc-locale/fr-fr/ci/variables/where_variables_can_be_used.md
{{< details >}}
{{< /details >}}
Comme décrit dans la documentation sur les variables CI/CD, vous pouvez définir de nombreuses variables différentes. Certaines d'entre elles peuvent être utilisées pour toutes les fonctionnalités GitLab CI/CD, mais d'autres sont plus ou moins limitées.
Ce document décrit où et comment les différents types de variables peuvent être utilisés.
Il existe deux endroits où les variables définies peuvent être utilisées. Sur le :
.gitlab-ci.yml.config.toml..gitlab-ci.yml {#gitlab-ciyml-file}{{< history >}}
CI_ENVIRONMENT_* à l'exception de CI_ENVIRONMENT_SLUG introduite dans GitLab 16.4.{{< /history >}}
| Définition | Peut être étendue ? | Lieu d'expansion | Description |
|---|---|---|---|
after_script | oui | Shell d'exécution de script | L'expansion des variables est effectuée par l'environnement shell d'exécution. |
artifacts:name | oui | Runner | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner. |
artifacts:paths | oui | Runner | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner. |
artifacts:exclude | oui | Runner | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner. |
before_script | oui | Shell d'exécution de script | L'expansion des variables est effectuée par l'environnement shell d'exécution |
cache:key | oui | Runner | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner. |
cache:paths | oui | Runner | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner. |
cache:policy | oui | Runner | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner. |
environment:name | oui | GitLab | Similaire à environment:url, mais l'expansion des variables ne prend pas en charge les éléments suivants : |
- Variables CI_ENVIRONMENT_*.
environment:url | oui | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab.Sont prises en charge toutes les variables définies pour un job (variables de projet/groupe, variables provenant de .gitlab-ci.yml, variables provenant de déclencheurs, variables provenant de planifications de pipeline).
Ne sont pas prises en charge les variables définies dans le fichier config.toml de GitLab Runner et les variables créées dans le script du job. |
| environment:deployment_tier | oui | GitLab | Similaire à environment:url, mais l'expansion des variables ne prend pas en charge les éléments suivants :
- Variables CI_ENVIRONMENT_*.
environment:auto_stop_in | oui | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab.La valeur de la variable substituée doit représenter une période de temps sous une forme en langage naturel lisible. Consultez les valeurs prises en charge pour plus d'informations. |
| environment:kubernetes:agent | oui | GitLab | Similaire à environment:url, mais l'expansion des variables ne prend pas en charge les éléments suivants :
- Variables CI_ENVIRONMENT_*.
environment:kubernetes:namespace | oui | GitLab | Similaire à environment:url, mais l'expansion des variables ne prend pas en charge les éléments suivants :- Variables CI_ENVIRONMENT_*.
id_tokens:aud | oui | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab. L'expansion des variables a été introduite dans GitLab 16.1. |
| image | oui | Runner | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner. |
| include | oui | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab.Consultez Utiliser des variables avec include pour plus d'informations sur les variables prises en charge. |
| resource_group | oui | GitLab | Similaire à environment:url, mais l'expansion des variables ne prend pas en charge les éléments suivants :
CI_ENVIRONMENT_URLrules:changes | non | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab. |
| rules:changes:compare_to | non | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab. |
| rules:exists | non | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab. |
| rules:if | non | Non applicable | La variable doit être sous la forme $variable. Les éléments suivants ne sont pas pris en charge :- La variable CI_ENVIRONMENT_SLUG.
script | oui | Shell d'exécution de script | L'expansion des variables est effectuée par l'environnement shell d'exécution. |
| services:name | oui | Runner | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner. |
| tags | oui | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab. |
| trigger et trigger:project | oui | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab. L'expansion des variables pour trigger:project a été introduite dans GitLab 15.3. |
| variables | oui | GitLab/Runner | L'expansion des variables est d'abord effectuée par le mécanisme interne d'expansion des variables dans GitLab, puis toutes les variables non reconnues ou indisponibles sont étendues par le mécanisme interne d'expansion des variables de GitLab Runner. |
| workflow:name | oui | GitLab | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables dans GitLab.Sont prises en charge toutes les variables disponibles dans workflow :
- Variables de projet/groupe.
variables global et workflow:rules:variables (lorsque la règle est satisfaite).
- Variables héritées des pipelines parents.
- Variables provenant de déclencheurs.
- Variables provenant de planifications de pipeline.Ne sont pas prises en charge les variables définies dans le fichier config.toml de GitLab Runner, les variables définies dans les jobs, ni les variables persistées. |
config.toml {#configtoml-file}| Définition | Peut être étendue ? | Description |
|---|---|---|
runners.environment | oui | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner |
runners.kubernetes.pod_labels | oui | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner |
runners.kubernetes.pod_annotations | oui | L'expansion des variables est effectuée par le mécanisme interne d'expansion des variables de GitLab Runner |
Vous pouvez en savoir plus sur config.toml dans la documentation de GitLab Runner.
Il existe trois mécanismes d'expansion :
La partie à étendre doit être sous la forme $variable, ${variable} ou %variable%. Chaque forme est traitée de la même manière, quel que soit le système d'exploitation ou le shell qui gère le job, car l'expansion est effectuée dans GitLab avant que tout runner ne reçoive le job.
GitLab développe les valeurs des variables de job de manière récursive avant de les envoyer au runner. Par exemple, dans le scénario suivant :
- BUILD_ROOT_DIR: '${CI_BUILDS_DIR}'
- OUT_PATH: '${BUILD_ROOT_DIR}/out'
- PACKAGE_PATH: '${OUT_PATH}/pkg'
Le runner reçoit un chemin valide et complet. Par exemple, si ${CI_BUILDS_DIR} est /output, alors PACKAGE_PATH serait /output/out/pkg.
Les références aux variables indisponibles sont conservées telles quelles. Dans ce cas, le runner tente d'étendre la valeur de la variable à l'exécution. Par exemple, une variable comme CI_BUILDS_DIR n'est connue du runner qu'à l'exécution.
.gitlab-ci.yml, variables config.toml, et variables provenant de déclencheurs, de planifications de pipeline et de pipelines manuels.export MY_VARIABLE="test").Le runner utilise la méthode os.Expand() de Go pour l'expansion des variables. Cela signifie qu'il ne traite que les variables définies sous la forme $variable et ${variable}. Il est également important de noter que l'expansion n'est effectuée qu'une seule fois, de sorte que les variables imbriquées peuvent fonctionner ou non, selon l'ordre des définitions de variables et selon que l'expansion des variables imbriquées est activée dans GitLab.
Pour les téléversements d'artefacts et de cache, le runner utilise mvdan.cc/sh/v3/expand pour l'expansion des variables à la place de os.Expand() de Go, car mvdan.cc/sh/v3/expand prend en charge l'expansion des paramètres.
Il s'agit d'une phase d'expansion qui se produit lors de l'exécution de script. Son comportement dépend du shell utilisé (bash, sh, cmd, PowerShell). Par exemple, si le script du job contient une ligne echo $MY_VARIABLE-${MY_VARIABLE_2}, elle devrait être correctement traitée par bash/sh (laissant des chaînes vides ou certaines valeurs selon que les variables sont définies ou non), mais ne fonctionne pas avec cmd ou PowerShell de Windows, car ces shells utilisent une syntaxe de variables différente.
Pris en charge :
script peut utiliser toutes les variables disponibles par défaut pour le shell (par exemple, $PATH qui devrait être présent dans tous les shells bash/sh) et toutes les variables définies par GitLab CI/CD (variables de projet/groupe, variables .gitlab-ci.yml, variables config.toml, et variables provenant de déclencheurs et de planifications de pipeline).script peut également utiliser toutes les variables définies dans les lignes précédentes. Ainsi, par exemple, si vous définissez une variable export MY_VARIABLE="test" :
before_script, cela fonctionne dans les lignes suivantes de before_script et dans toutes les lignes du script associé.script, cela fonctionne dans les lignes suivantes de script.after_script, cela fonctionne dans les lignes suivantes de after_script.Dans le cas des scripts after_script, ils peuvent :
after_script.before_script et script.Ces restrictions existent parce que les scripts after_script sont exécutés dans un contexte shell séparé.
Certaines variables prédéfinies sont dites persistées. Les variables persistées sont :
rules.Les jobs de déclenchement de pipeline ne peuvent pas utiliser les variables persistées au niveau du job, mais peuvent utiliser les variables persistées au niveau du pipeline.
Certaines variables persistées contiennent des jetons et ne peuvent pas être utilisées dans certaines définitions pour des raisons de sécurité.
Variables persistées au niveau du pipeline :
CI_PIPELINE_IDCI_PIPELINE_URLVariables persistées au niveau du job :
CI_DEPLOY_PASSWORDCI_DEPLOY_USERCI_JOB_IDCI_JOB_STARTED_ATCI_JOB_TOKENCI_JOB_URLCI_PIPELINE_CREATED_ATCI_REGISTRY_PASSWORDCI_REGISTRY_USERCI_REPOSITORY_URLLes variables définies avec une portée d'environnement sont prises en charge. Étant donné qu'une variable $STAGING_SECRET est définie dans une portée de review/staging/*, le job suivant utilisant des environnements dynamiques est créé, sur la base de l'expression de variable correspondante :
my-job:
stage: staging
environment:
name: review/$CI_JOB_STAGE/deploy
script:
- 'deploy staging'
rules:
- if: $STAGING_SECRET == 'something'