Skip to main content

Cette version de GitHub Enterprise Server n'est plus disponible depuis le 2023-09-25. Aucune publication de correctifs n’est effectuée, même pour les problèmes de sécurité critiques. Pour de meilleures performances, une sécurité améliorée et de nouvelles fonctionnalités, effectuez une mise à niveau vers la dernière version de GitHub Enterprise. Pour obtenir de l’aide sur la mise à niveau, contactez le support GitHub Enterprise.

Variables

GitHub définit les variables par défaut pour chaque exécution de workflow GitHub Actions. Vous pouvez également définir des variables personnalisées dans votre fichier de workflow.

Remarque : Les exécuteurs hébergés sur GitHub ne sont pas pris en charge sur GitHub Enterprise Server. Vous pouvez voir plus d’informations sur le support futur planifié dans la GitHub public roadmap.

À propos des variables

Vous pouvez utiliser des variables pour stocker les informations que vous souhaitez référencer dans votre workflow. Vous référencez des variables au sein d’une étape de workflow ou d’une action, et les variables sont interpolées sur la machine d’exécuteur qui exécute votre workflow. Les commandes qui s’exécutent dans des actions ou des étapes de workflow peuvent créer, lire ou modifier des variables.

Vous pouvez définir vos propres variables personnalisées, vous pouvez utiliser les variables par défaut que GitHub définit automatiquement, et vous pouvez également utiliser toutes les autres variables définies dans l’environnement de travail sur l’exécuteur. Les variables respectent la casse.

Définition de variables d’environnement

Pour définir une variable d’environnement personnalisée, vous pouvez la définir à l’aide de la clé env dans le fichier de workflow. L’étendue d’une variable personnalisée définie par cette méthode est limitée à l’élément dans lequel elle est définie. Vous pouvez définir des variables dont l’étendue est :

  • Le workflow entier, en utilisant env au niveau supérieur du fichier de workflow.
  • Le contenu d’un travail au sein d’un workflow, en utilisant jobs.<job_id>.env.
  • Une étape spécifique dans un travail, en utilisant jobs.<job_id>.steps[*].env.
YAML
name: Greeting on variable day

on:
  workflow_dispatch

env:
  DAY_OF_WEEK: Monday

jobs:
  greeting_job:
    runs-on: ubuntu-latest
    env:
      Greeting: Hello
    steps:
      - name: "Say Hello Mona it's Monday"
        run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
        env:
          First_Name: Mona

Vous pouvez accéder aux valeurs de variable env à l’aide de variables d’environnement d’exécuteur ou de contextes. L’exemple ci-dessus montre trois variables personnalisées utilisées en tant que variables d’environnement dans une commande echo : $DAY_OF_WEEK, $Greeting et $First_Name. Les valeurs de ces variables sont définies et limitées respectivement au niveau du workflow, du travail et de l’étape. Pour plus d’informations sur l’accès aux valeurs de variable à l’aide de contextes, consultez « Utilisation de contextes pour accéder aux valeurs de variable ».

Étant donné que l’interpolation des variables d’environnement d’exécuteur est effectuée une fois qu’un travail de workflow est envoyé à une machine d’exécuteur, vous devez utiliser la syntaxe appropriée pour l’interpréteur de commandes utilisé sur l’exécuteur. Dans cet exemple, le workflow spécifie ubuntu-latest. Par défaut, les exécuteurs Linux utilisent l’interpréteur de commandes bash. Vous devez donc utiliser la syntaxe $NAME. Si le workflow a spécifié un exécuteur Windows, vous utiliserez la syntaxe pour PowerShell, $env:NAME. Pour plus d’informations sur les interpréteurs de commandes, consultez « Workflow syntax for GitHub Actions ».

Conventions d’affectation de noms pour les variables d’environnement

Lorsque vous définissez une variable d’environnement, vous ne pouvez pas utiliser les noms de variable d’environnement par défaut. Pour obtenir la liste complète des variables d’environnement par défaut, consultez « Variables d’environnement par défaut » ci-dessous. Si vous tentez de remplacer la valeur de l’une de ces variables par défaut, l’affectation est ignorée.

Toutes les nouvelles variables que vous définissez et qui pointent vers un emplacement dans le système de fichiers doivent avoir un suffixe _PATH. Les variables par défaut GITHUB_ENV et GITHUB_WORKSPACE sont des exceptions à cette convention.

Remarque : Vous pouvez lister l’ensemble des variables d’environnement disponibles pour une étape de workflow en utilisant run: env dans une étape, puis en examinant la sortie de cette étape.

Utilisation de contextes pour accéder aux valeurs des variables

Les contextes offrent un moyen d’accéder aux informations sur les exécutions de workflow, les variables, les environnements d’exécuteur, les travaux et les étapes. Pour plus d’informations, consultez « Contextes ». Il existe de nombreux autres contextes que vous pouvez utiliser à diverses fins dans vos workflows. Pour plus d’informations sur l’emplacement où vous pouvez utiliser des contextes spécifiques au sein d’un workflow, consultez « Contextes ».

Vous pouvez accéder aux valeurs des variables d’environnement à l’aide du contexte env.

Utilisation du contexte env pour accéder aux valeurs des variables d’environnement

Outre les variables d’environnement d’exécuteur, GitHub Actions vous permet de définir et de lire des valeurs de clés env à l’aide de contextes. Les variables d’environnement et les contextes sont destinés à être utilisés à différents points du workflow.

Les variables d’environnement d’exécuteur sont toujours interpolées sur la machine d’exécuteur. Toutefois, les parties d’un workflow sont traitées par GitHub Actions et ne sont pas envoyées à l’exécuteur. Vous ne pouvez pas utiliser de variables d’environnement dans ces parties d’un fichier de workflow. À la place, vous pouvez utiliser des contextes. Par exemple, une condition if, qui détermine si un travail ou une étape sont envoyés à l’exécuteur, est toujours traitée par GitHub Actions. Vous pouvez utiliser un contexte dans une instruction conditionnelle if pour accéder à la valeur d’une variable.

YAML
env:
  DAY_OF_WEEK: Monday

jobs:
  greeting_job:
    runs-on: ubuntu-latest
    env:
      Greeting: Hello
    steps:
      - name: "Say Hello Mona it's Monday"
        if: ${{ env.DAY_OF_WEEK == 'Monday' }}
        run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
        env:
          First_Name: Mona

Dans cette modification de l’exemple précédent, nous avons introduit une condition if. L’étape de workflow est désormais exécutée uniquement si la variable DAY_OF_WEEK a pour valeur « Monday » (Lundi). Nous accédons à cette valeur à partir de l’instruction conditionnelle if en utilisant le contexte env.

Remarque : Les contextes sont généralement indiqués par un signe dollar et des accolades, comme ${{ context.property }}. Dans une condition if, les éléments ${{ et }} sont facultatifs, mais si vous les utilisez, ils doivent contenir l’instruction de comparaison entière, comme indiqué ci-dessus.

Vous utilisez généralement le contexte env ou github pour accéder aux valeurs des variables figurant dans les parties du workflow traitées avant que les travaux soient envoyés aux exécuteurs.

ContextCas d’utilisationExemple
envRéférencer des variables personnalisées définies dans le workflow.${{ env.MY_VARIABLE }}
githubRéférencer des informations sur l’exécution du workflow et l’événement qui a déclenché cette exécution.${{ github.repository }}

Variables d’environnement par défaut

Les variables d’environnement par défaut que GitHub définit sont disponibles pour chaque étape d’un workflow.

Étant donné que les variables d’environnement par défaut sont définies par GitHub et non dans un flux de travail, elles ne sont pas accessibles via le contexte env. Cependant, la plupart des variables par défaut ont une propriété de contexte correspondante et portant un nom similaire. Par exemple, la valeur de la variable GITHUB_REF peut être lue pendant le traitement du workflow à l’aide de la propriété de contexte ${{ github.ref }}.

Vous ne pouvez pas remplacer la valeur des variables d’environnement par défaut appelées GITHUB_* et RUNNER_*. Actuellement, vous pouvez remplacer la valeur de la variable CI. Toutefois, il n’est pas garanti que cela sera toujours possible. Pour plus d’informations sur la définition des variables d’environnement, consultez « Définition des variables d’environnement pour un seul flux de travail » et « Workflow commands for GitHub Actions ».

Nous recommandons vivement que les actions utilisent des variables pour accéder au système de fichiers plutôt que des chemins de fichier codés en dur. GitHub définit les variables pour les actions à utiliser dans tous les environnements d’exécution.

VariableDescription
CIToujours défini sur true.
GITHUB_ACTIONNom de l’action en cours d’exécution ou id d’une étape. Par exemple, pour une action, __repo-owner_name-of-action-repo.

GitHub supprime les caractères spéciaux et utilise le nom __run quand l’étape actuelle exécute un script sans id. Si vous utilisez le même script ou la même action plusieurs fois dans un même travail, le nom inclut un suffixe qui se compose du numéro de séquence précédé d’un trait de soulignement. Par exemple, le premier script que vous exécutez aura le nom __run et le deuxième script sera nommé __run_2. De même, le deuxième appel de actions/checkout sera actionscheckout2.
GITHUB_ACTION_PATHChemin où figure une action. Cette propriété est prise en charge uniquement dans les actions composites. Vous pouvez utiliser ce chemin pour accéder aux fichiers situés dans le même dépôt que l’action. Par exemple : /home/runner/work/_actions/repo-owner/name-of-action-repo/v1.
GITHUB_ACTION_REPOSITORYPour une étape exécutant une action, il s’agit du propriétaire et du nom du dépôt de l’action. Par exemple : actions/checkout.
GITHUB_ACTIONSToujours définie sur true quand GitHub Actions exécute le workflow. Vous pouvez utiliser cette variable pour différencier quand les tests sont exécutés localement ou par GitHub Actions.
GITHUB_ACTORNom de la personne ou de l’application qui a lancé le workflow. Par exemple : octocat.
GITHUB_API_URLRetourne l’URL de l’API. Par exemple : http(s)://HOSTNAME/api/v3.
GITHUB_BASE_REFNom de la référence de base ou de la branche cible de la demande de tirage (pull request) dans une exécution de workflow. Il est défini uniquement lorsque l’événement qui déclenche une exécution de workflow est pull_request ou pull_request_target. Par exemple : main.
GITHUB_ENVChemin sur l’exécuteur jusqu’au fichier qui définit les variables à partir des commandes de workflow. Ce fichier est unique à l’étape actuelle et change pour chaque étape d’un travail. Par exemple : /home/runner/work/_temp/_runner_file_commands/set_env_87406d6e-4979-4d42-98e1-3dab1f48b13a. Pour plus d’informations, consultez « Workflow commands for GitHub Actions ».
GITHUB_EVENT_NAMENom de l’événement qui a déclenché le workflow. Par exemple : workflow_dispatch.
GITHUB_EVENT_PATHChemin jusqu’au fichier sur l’exécuteur qui contient la charge utile de webhook d’événement complet. Par exemple : /github/workflow/event.json.
GITHUB_GRAPHQL_URLRetourne l’URL de l’API GraphQL. Par exemple : http(s)://HOSTNAME/api/graphql.
GITHUB_HEAD_REFRéférence principale ou branche source de la demande de tirage (pull request) dans une exécution de workflow. Cette propriété est définie uniquement quand l’événement qui déclenche une exécution de workflow est pull_request ou pull_request_target. Par exemple : feature-branch-1.
GITHUB_JOBÉlément job_id du travail actuel. Par exemple, greeting_job
GITHUB_OUTPUTChemin d’accès de l’exécuteur jusqu’au fichier qui définit les productions de l’étape en cours à partir des commandes de workflow. Ce fichier est unique à l’étape actuelle et change pour chaque étape d’un travail. Par exemple, /home/runner/work/_temp/_runner_file_commands/set_output_a50ef383-b063-46d9-9157-57953fc9f3f0 Pour plus d’informations, consultez « Workflow commands for GitHub Actions ».
GITHUB_PATHChemin sur l’exécuteur jusqu’au fichier qui définit les variables PATH système à partir des commandes de workflow. Ce fichier est unique à l’étape actuelle et change pour chaque étape d’un travail. Par exemple : /home/runner/work/_temp/_runner_file_commands/add_path_899b9445-ad4a-400c-aa89-249f18632cf5. Pour plus d’informations, consultez « Workflow commands for GitHub Actions ».
GITHUB_REFRéférence complète de la branche ou de l’étiquette qui a déclenché l’exécution du workflow. Pour les workflows déclenchés par push, il s’agit de la branche ou de la référence d’étiquette qui a été envoyée. Pour les workflows déclenchés par pull_request, il s’agit de la branche de fusion de la requête de tirage. Pour les workflows déclenchés par release, il s’agit de l’étiquette de mise en production créée. Pour les autres déclencheurs, il s’agit de la branche ou de la référence d’étiquette qui a déclenché l’exécution du workflow. Cette variable est définie uniquement si une branche ou une étiquette est disponible pour le type d’événement. La référence donnée est entièrement formée, ce qui signifie que le format est refs/heads/<branch_name> pour les branches, refs/pull/<pr_number>/merge pour les requêtes de tirage et refs/tags/<tag_name> pour les étiquettes. Par exemple : refs/heads/feature-branch-1.
GITHUB_REF_NAMENom de référence court de la branche ou de l’étiquette qui a déclenché l’exécution du workflow. Cette valeur correspond au nom de la branche ou de l’étiquette indiquée sur GitHub. Par exemple : feature-branch-1.
GITHUB_REF_PROTECTEDtrue si des protections de branche sont configurées pour la référence qui a déclenché l’exécution du workflow.
GITHUB_REF_TYPEType de référence qui a déclenché l’exécution du workflow. Les valeurs valides sont branch ou tag.
GITHUB_REPOSITORYNom du propriétaire et du référentiel. Par exemple : octocat/Hello-World.
GITHUB_REPOSITORY_OWNERNom du propriétaire du dépôt. Par exemple : octocat.
GITHUB_RETENTION_DAYSNombre de jours pendant lesquels les journaux d’exécution et les artefacts du workflow sont conservés. Par exemple : 90.
GITHUB_RUN_ATTEMPTNuméro unique pour chaque tentative d’exécution d’un workflow particulier dans un dépôt. Ce numéro commence à 1 pour la première tentative d’exécution du workflow et augmente d’une unité à chaque nouvelle exécution. Par exemple : 3.
GITHUB_RUN_IDNuméro unique pour chaque exécution de workflow dans un dépôt. Ce numéro ne change pas si vous réexécutez l’exécution de workflow. Par exemple, 1658821493.
GITHUB_RUN_NUMBERNuméro unique de chaque exécution d’un workflow particulier dans un dépôt. Ce nombre commence à 1 pour la première exécution du workflow et s’incrémente à chaque nouvelle exécution. Ce numéro ne change pas si vous réexécutez l’exécution de workflow. Par exemple, 3.
GITHUB_SERVER_URLURL du serveur GitHub Enterprise Server. Par exemple : https://HOSTNAME.
GITHUB_SHASHA de commit qui a déclenché le workflow. La valeur de ce SHA de commit dépend de l’événement qui a déclenché le workflow. Pour plus d’informations, consultez « Événements qui déclenchent des flux de travail ». Par exemple : ffac537e6cbbf934b08745a378932722df287a53.
GITHUB_STEP_SUMMARYChemin sur l’exécuteur du fichier qui contient les récapitulatifs des travaux des commandes de workflow. Ce fichier est unique à l’étape actuelle et change pour chaque étape d’un travail. Par exemple : /home/runner/_layout/_work/_temp/_runner_file_commands/step_summary_1cb22d7f-5663-41a8-9ffc-13472605c76c. Pour plus d’informations, consultez « Workflow commands for GitHub Actions ».
GITHUB_WORKFLOWNom du workflow. Par exemple : My test workflow. Si le fichier de workflow ne spécifie pas un name, la valeur de cette variable est le chemin complet du fichier de workflow dans le dépôt.
GITHUB_WORKSPACERépertoire de travail par défaut sur l’exécuteur pour les étapes, et emplacement par défaut de votre dépôt lors de l’utilisation de l’action checkout. Par exemple : /home/runner/work/my-repo-name/my-repo-name.
RUNNER_ARCHArchitecture de l’exécuteur qui exécute le travail. Les valeurs possibles sont X86, X64, ARM ou ARM64.
RUNNER_DEBUGCela est défini seulement si la journalisation du débogage est activée et a toujours la valeur 1. À titre indicatif, il peut être utile d’activer un débogage supplémentaire ou une journalisation détaillée dans vos propres étapes de travail.
RUNNER_NAMENom de l’exécuteur du travail. Par exemple, Hosted Agent
RUNNER_OSSystème d’exploitation de l’exécuteur du travail. Les valeurs possibles sont Linux, Windows ou macOS. For example, Windows
RUNNER_TEMPChemin d’un répertoire temporaire sur l’exécuteur. Ce répertoire est vidé au début et à la fin de chaque travail. Notez que les fichiers ne sont pas supprimés si le compte d’utilisateur de l’exécuteur n’a pas l’autorisation de les supprimer. Par exemple, D:\a\_temp
RUNNER_TOOL_CACHEChemin du répertoire contenant des outils préinstallés pour les exécuteurs hébergés par GitHub. Pour plus d’informations, consultez « Using GitHub-hosted runners ». Par exemple, C:\hostedtoolcache\windows

Note : si vous devez utiliser l’URL de l’exécution d’un flux de travail à partir d’un projet, vous pouvez combiner ces variables :$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID

Détection du système d’exploitation

Vous pouvez écrire un fichier de workflow individuel qui peut être utilisé pour différents systèmes d’exploitation à l’aide de la variable d’environnement par défaut RUNNER_OS et de la propriété de contexte correspondante ${{ runner.os }}. Par exemple, le workflow suivant peut être exécuté correctement si vous avez remplacé le système d’exploitation macos-latest par windows-latest sans avoir à modifier la syntaxe des variables d’environnement, ce qui diffère selon l’interpréteur de commandes utilisé par l’exécuteur.

YAML
jobs:
  if-Windows-else:
    runs-on: macos-latest
    steps:
      - name: condition 1
        if: runner.os == 'Windows'
        run: echo "The operating system on the runner is $env:RUNNER_OS."
      - name: condition 2
        if: runner.os != 'Windows'
        run: echo "The operating system on the runner is not Windows, it's $RUNNER_OS."

Dans cet exemple, les deux instructions if vérifient la propriété os du contexte runner pour déterminer le système d’exploitation de l’exécuteur. Les conditions if sont traitées par GitHub Actions et seules les étapes où la vérification est résolue comme true sont envoyées à l’exécuteur. Ici, l’une des vérifications sera toujours true et l’autre false, si bien qu’une seule de ces étapes est envoyée à l’exécuteur. Une fois le travail envoyé à l’exécuteur, l’étape est exécutée et la variable d’environnement dans la commande echo est interpolée à l’aide de la syntaxe appropriée ($env:NAME pour PowerShell sur Windows, et $NAME pour bash et sh sur Linux et MacOS). Dans cet exemple, l’instruction runs-on: macos-latest signifie que la deuxième étape sera exécutée.

Transmission de valeurs entre les étapes et les travaux dans un workflow

Si vous générez une valeur dans une étape d’un travail, vous pouvez utiliser cette valeur dans les étapes suivantes du même travail en affectant la valeur à une variable d’environnement existante ou nouvelle, puis en écrivant cette dernière dans le fichier d’environnement GITHUB_ENV. Le fichier d’environnement peut être utilisé directement par une action ou à partir d’une commande shell dans le fichier de workflow à l’aide du mot clé run. Pour plus d’informations, consultez « Workflow commands for GitHub Actions ».

Si vous souhaitez transmettre une valeur d’une étape d’un travail dans un workflow vers une étape d’un autre travail dans le workflow, vous pouvez définir la valeur en tant que sortie de travail. Vous pouvez ensuite référencer cette sortie de travail à partir d’une étape dans un autre travail. Pour plus d’informations, consultez « Workflow syntax for GitHub Actions ».