# Stocker des informations dans des variables

GitHub définit les variables par défaut pour chaque GitHub Actions exécution de flux de travail. Vous pouvez également définir des variables personnalisées à utiliser dans un seul ou plusieurs flux de travail.

## Définition de variables d’environnement pour un workflow unique

Pour configurer une variable d’environnement à utiliser dans un workflow unique, vous pouvez la définir en utilisant la clé `env` dans le fichier du 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`](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#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`](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idenv).
* Une étape spécifique dans un travail, en utilisant [`jobs.<job_id>.steps[*].env`](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsenv).

```yaml copy
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 d'exécuteur 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. L’interpolation de ces variables s’effectue sur l’exécuteur.

Les commandes des étapes `run` d’un workflow, ou d’une action référencée, sont traitées par le shell que vous utilisez sur l’exécuteur. Les instructions contenues dans les autres parties d’un flux de travail sont traitées GitHub Actions et ne sont pas envoyées à l’exécuteur. Vous pouvez utiliser des variables d'environnement d'exécuteur ou des contextes dans les étapes `run`, mais dans les parties d'un flux de travail qui ne sont pas envoyées à l'exécution, vous devez utiliser des contextes pour accéder aux valeurs des variables. Pour plus d’informations, consultez « [Utilisation du contexte pour accéder aux valeurs des variables](#using-contexts-to-access-variable-values) ».

É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`. Par défaut, les exécuteurs Windows utilisent PowerShell. Vous devez donc utiliser la syntaxe `$env:NAME`. Pour plus d’informations sur les interpréteurs de commandes, consultez « [Syntaxe de flux de travail pour GitHub Actions](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsshell) ».

## Définition de variables de configuration pour plusieurs workflows

Vous pouvez créer des variables de configuration à utiliser dans plusieurs workflows et les définir au niveau de l’[organisation](#creating-configuration-variables-for-an-organization), du [dépôt](#creating-configuration-variables-for-a-repository) ou de l’[environnement](#creating-configuration-variables-for-an-environment).

Par exemple, vous pouvez utiliser des variables de configuration pour définir des valeurs par défaut pour les paramètres passés aux outils de génération au niveau de l’organisation, mais autoriser ensuite les propriétaires de dépôts à remplacer ces paramètres au cas par cas.

Lorsque vous définissez des variables de configuration, elles sont automatiquement disponibles dans le contexte `vars`. Pour plus d’informations, consultez « [Utilisation du contexte `vars` pour accéder aux valeurs des variables de configuration](#using-the-vars-context-to-access-configuration-variable-values) ».

### Création de variables de configuration pour un dépôt

Pour créer des secrets ou des variables sur GitHub pour un référentiel d’organisation, vous devez avoir `admin` accès. Pour un référentiel de comptes personnels, vous devez être collaborateur du référentiel.

1. Sur GitHub, accédez à la page principale du référentiel.
2. Sous le nom de votre référentiel, cliquez sur **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> Paramètres**. Si vous ne voyez pas l’onglet « Paramètres », sélectionnez le menu déroulant **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="More" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>** , puis cliquez sur **Paramètres**.

   ![Capture d’écran d’un en-tête de dépôt montrant les onglets. L’onglet « Paramètres » est mis en évidence avec un encadré orange foncé.](/assets/images/help/repository/repo-actions-settings.png)
3. Dans la section « Sécurité » de la barre latérale, sélectionnez **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-key-asterisk" aria-label="key-asterisk" role="img"><path d="M0 2.75A2.75 2.75 0 0 1 2.75 0h10.5A2.75 2.75 0 0 1 16 2.75v10.5A2.75 2.75 0 0 1 13.25 16H2.75A2.75 2.75 0 0 1 0 13.25ZM2.75 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25V2.75c0-.69-.56-1.25-1.25-1.25Z"></path><path d="M8 4a.75.75 0 0 1 .75.75V6.7l1.69-.975a.75.75 0 0 1 .75 1.3L9.5 8l1.69.976a.75.75 0 0 1-.75 1.298L8.75 9.3v1.951a.75.75 0 0 1-1.5 0V9.299l-1.69.976a.75.75 0 0 1-.75-1.3L6.5 8l-1.69-.975a.75.75 0 0 1 .75-1.3l1.69.976V4.75A.75.75 0 0 1 8 4Z"></path></svg> Secrets et variables**, puis cliquez sur **Actions**.
4. Cliquez sur l’onglet **Variables**.

![Capture d’écran de la page « Actions secrets et variables ». L’onglet « Variables » est présenté en orange foncé.](/assets/images/help/repository/actions-variables-tab.png)

1. Cliquez sur **Nouvelle variable de dépôt**.
2. Dans le champ **Nom**, entrez un nom pour la variable.
3. Dans le champ **Valeur**, entrez la valeur de la variable.
4. Cliquez sur **Ajouter une variable**.

### Création de variables de configuration pour un environnement

Pour créer des secrets ou des variables pour un environnement dans un dépôt d’un compte personnel, vous devez être le propriétaire du dépôt. Pour créer des secrets ou des variables pour un environnement dans un référentiel d’organisation, vous devez disposer d’un accès `admin`. Pour plus d’informations sur les environnements, consultez [Gestion des environnements pour le déploiement](/fr/enterprise-server@3.22/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments).

1. Sur GitHub, accédez à la page principale du référentiel.
2. Sous le nom de votre référentiel, cliquez sur **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> Paramètres**. Si vous ne voyez pas l’onglet « Paramètres », sélectionnez le menu déroulant **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="More" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>** , puis cliquez sur **Paramètres**.

   ![Capture d’écran d’un en-tête de dépôt montrant les onglets. L’onglet « Paramètres » est mis en évidence avec un encadré orange foncé.](/assets/images/help/repository/repo-actions-settings.png)
3. Dans la barre latérale gauche, cliquez sur **Environnements**.
4. Cliquez sur l’environnement auquel vous souhaitez ajouter une variable.
5. Sous **Variables d’environnement**, cliquez sur **Ajouter une variable**.
6. Dans le champ **Nom**, entrez un nom pour la variable.
7. Dans le champ **Valeur**, entrez la valeur de la variable.
8. Cliquez sur **Ajouter une variable**.

### Création de variables de configuration pour une organisation

Quand vous créez un secret ou une variable dans une organisation, vous pouvez utiliser une stratégie pour limiter l’accès par dépôt. Par exemple, vous pouvez accorder l’accès à tous les dépôts, ou limiter l’accès aux seuls dépôts privés ou à une liste spécifiée de dépôts.

Les propriétaires et utilisateurs de l’organisation disposant des autorisations « Gérer les variables Actions de l’organisation » ou « Gérer les secrets d’actions de l’organisation » peuvent créer des secrets ou des variables au niveau de l’organisation.

Pour plus d’informations, consultez [Autorisations des rôles d’organisation personnalisés](/fr/enterprise-server@3.22/organizations/managing-peoples-access-to-your-organization-with-roles/permissions-of-custom-organization-roles).

1. Sur GitHub, accédez à la page principale de l’organisation.

2. Sous le nom de votre organisation, cliquez sur **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> Settings**. Si vous ne voyez pas l’onglet « Paramètres », sélectionnez le menu déroulant **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="More" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>** , puis cliquez sur **Paramètres**.

   ![Capture d’écran des onglets dans le profil d’une organisation. L’onglet « Paramètres » est présenté en orange foncé.](/assets/images/help/discussions/org-settings-global-nav-update.png)

3. Dans la section « Sécurité » de la barre latérale, sélectionnez **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-key-asterisk" aria-label="key-asterisk" role="img"><path d="M0 2.75A2.75 2.75 0 0 1 2.75 0h10.5A2.75 2.75 0 0 1 16 2.75v10.5A2.75 2.75 0 0 1 13.25 16H2.75A2.75 2.75 0 0 1 0 13.25ZM2.75 1.5c-.69 0-1.25.56-1.25 1.25v10.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25V2.75c0-.69-.56-1.25-1.25-1.25Z"></path><path d="M8 4a.75.75 0 0 1 .75.75V6.7l1.69-.975a.75.75 0 0 1 .75 1.3L9.5 8l1.69.976a.75.75 0 0 1-.75 1.298L8.75 9.3v1.951a.75.75 0 0 1-1.5 0V9.299l-1.69.976a.75.75 0 0 1-.75-1.3L6.5 8l-1.69-.975a.75.75 0 0 1 .75-1.3l1.69.976V4.75A.75.75 0 0 1 8 4Z"></path></svg> Secrets et variables**, puis cliquez sur **Actions**.

4. Cliquez sur l’onglet **Variables**.

   ![Capture d’écran de la page « Actions : Secrets et Variables ». L’onglet « Variables » est présenté en orange foncé.](/assets/images/help/repository/actions-variables-tab.png)

   > \[!NOTE]
   > La page « Secrets et variables Actions » peut ne pas afficher d’onglets distincts pour les secrets et les variables en fonction de vos autorisations. Les propriétaires d’organisation et les utilisateurs disposant des autorisations « Gérer les variables Actions de l’organisation » et « Gérer les secrets Actions de l’organisation » voient les onglets **Variables** et **Secrets**. Pour plus d’informations, consultez « [Autorisations des rôles d’organisation personnalisés](/fr/enterprise-server@3.22/organizations/managing-peoples-access-to-your-organization-with-roles/permissions-of-custom-organization-roles) ».

5. Cliquez sur **Nouvelle variable d’organisation**.

6. Dans le champ **Nom**, entrez un nom pour la variable.

7. Dans le champ **Valeur**, entrez la valeur de la variable.

8. Dans la liste déroulante **Accès au dépôt**, choisissez une stratégie d’accès.

9. Cliquez sur **Ajouter une variable**.

## 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 [Référence des contextes](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/contexts). 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 « [Référence des contextes](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/contexts#context-availability) ».

Vous pouvez accéder aux valeurs des variables d'environnement à l'aide du contexte `env` et aux valeurs des variables de configuration à l'aide du contexte `vars`.

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

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

Les étapes `run` d'un flux de travail, ou d'une action référencée, sont traitées par un exécuteur. Par conséquent, vous pouvez utiliser les variables d'environnement de l’exécuteur ici, en utilisant la syntaxe appropriée pour le shell que vous utilisez sur l’exécuteur : par exemple, `$NAME` pour le shell bash sur un exécuteur Linux ou `$env:NAME` pour PowerShell sur un exécuteur Windows. Dans la plupart des cas, vous pouvez également utiliser des contextes, avec la syntaxe `${{ CONTEXT.PROPERTY }}`, pour accéder à la même valeur. La différence est que le contexte sera interpolé et remplacé par une chaîne de caractères avant que le projet ne soit envoyé à un exécuteur.

Toutefois, vous ne pouvez pas utiliser les variables d’environnement de l’exécuteur dans des parties d’un flux de travail qui sont traitées par GitHub Actions et qui ne sont pas envoyées à l’exécuteur. À la place, vous devez utiliser des contextes. Par exemple, une conditionnelle `if`, qui détermine si une tâche ou une étape est envoyée au runner, est toujours traitée par GitHub Actions. Vous devez donc utiliser un contexte dans une `if` instruction conditionnelle pour accéder à la valeur d’une variable.

```yaml copy
name: Conditional env variable

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"
        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`](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/contexts#env-context). Le contexte `env` n'est pas nécessaire pour les variables référencées dans la commande `run`. Elles sont référencées en tant que variables d'environnement de l'exécuteur et sont interpolées après la réception du projet par l’exécuteur. Nous aurions cependant pu choisir d'interpoler ces variables avant d'envoyer le projet à l’exécuteur, en utilisant des contextes. La production résultante serait la même.

```yaml
run: echo "${{ env.Greeting }} ${{ env.First_Name }}. Today is ${{ env.DAY_OF_WEEK }}!"
```

> \[!NOTE]
> Les contextes sont généralement indiqués à l’aide du signe dollar et des accolades, comme `${{ context.property }}`. Dans un `if` conditionnel, le `${{` et `}}` sont facultatifs, mais si vous les utilisez, ils doivent contenir l’intégralité de l’instruction de comparaison, comme indiqué ci-dessus.

> \[!WARNING]
> Lors de la création de flux de travail et d’actions, vous devez toujours déterminer si votre code pourrait exécuter des entrées non fiables provenant de personnes malveillantes potentielles. Certains contextes doivent être traités comme des entrées non fiables, car un attaquant peut insérer son propre contenu malveillant. Pour plus d’informations, consultez « [Informations de référence sur l’utilisation sécurisée](/fr/enterprise-server@3.22/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks) ».

### Utilisation du contexte `vars` pour accéder à des valeurs de variable de configuration

Les variables de configuration sont accessibles dans le workflow à l’aide du contexte `vars`. Pour plus d’informations, consultez « [Référence des contextes](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/contexts#vars-context) ».

Si aucune variable de configuration n’a été définie, la valeur retournée d’un contexte référençant la variable est une chaîne vide.

L’exemple suivant montre l’utilisation de variables de configuration avec le contexte `vars` dans un workflow. Chacune des variables de configuration suivantes a été définie au niveau du dépôt, de l’organisation ou de l’environnement.

```yaml copy
on:
  workflow_dispatch:
env:
  # Setting an environment variable with the value of a configuration variable
  env_var: ${{ vars.ENV_CONTEXT_VAR }}

jobs:
  display-variables:
    name: ${{ vars.JOB_NAME }}
    # You can use configuration variables with the `vars` context for dynamic jobs
    if: ${{ vars.USE_VARIABLES == 'true' }}
    runs-on: ${{ vars.RUNNER }}
    environment: ${{ vars.ENVIRONMENT_STAGE }}
    steps:
    - name: Use variables
      run: |
        echo "repository variable : $REPOSITORY_VAR"
        echo "organization variable : $ORGANIZATION_VAR"
        echo "overridden variable : $OVERRIDE_VAR"
        echo "variable from shell environment : $env_var"
      env:
        REPOSITORY_VAR: ${{ vars.REPOSITORY_VAR }}
        ORGANIZATION_VAR: ${{ vars.ORGANIZATION_VAR }}
        OVERRIDE_VAR: ${{ vars.OVERRIDE_VAR }}
        
    - name: ${{ vars.HELLO_WORLD_STEP }}
      if: ${{ vars.HELLO_WORLD_ENABLED == 'true' }}
      uses: actions/hello-world-javascript-action@main
      with:
        who-to-greet: ${{ vars.GREET_NAME }}
```

## Détection du système d’exploitation

Vous pouvez écrire un fichier de flux de travail unique qui peut être utilisé pour différents systèmes d’exploitation à l’aide de la `RUNNER_OS` variable d’environnement par défaut et de la propriété <span style="white-space: nowrap;">`${{ runner.os }}`</span>de contexte correspondante. 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 copy
on: workflow_dispatch

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.
`if` les expressions conditionnelles sont traitées par GitHub Actions, et seules les étapes pour lesquelles la vérification s’avère `true` sont envoyées à l’agent d’exécution. 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 « [Commandes de flux de travail pour GitHub Actions](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-commands#setting-an-environment-variable) ».

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 « [Syntaxe de flux de travail pour GitHub Actions](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idoutputs) ».

## Étapes suivantes

Pour obtenir des informations de référence, consultez [Références des variables](/fr/enterprise-server@3.22/actions/reference/workflows-and-actions/variables).