Lancement des variables d’environnement et des secrets GitHub Actions

Si vous êtes nouveau dans les variables d’environnement GitHub Actions, vous avez peut-être encore à apprendre comment les stocker. Mais est-ce possible ? Oui !

Dans ce tutoriel, vous apprendrez différentes façons de sauvegarder vos variables d’environnement GitHub Actions et les secrets que vous pouvez utiliser lorsque cela est nécessaire lors de votre travail avec GitHub Actions.

Prêt ? Continuez à lire pour commencer !

Prérequis

Ce tutoriel sera une démonstration pratique qui nécessite n’importe quel système d’exploitation avec Git installé, le système d’exploitation Ubuntu est utilisé dans le tutoriel. De plus, une connaissance de base des opérations Git est nécessaire pour valider du code dans un référentiel de variables d’environnement GitHub Actions.

Configuration des variables d’environnement pour GitHub Actions

Lors de l’automatisation des processus avec le flux de travail GitHub Actions, vous pourriez avoir besoin d’attacher des variables d’environnement à vos flux de travail. Comment ? Vous devez d’abord créer et spécifier des variables d’environnement personnalisées dans le flux de travail avec le mot-clé env.

1. Créez un répertoire nommé .github/workflows où vous stockerez votre fichier de flux de travail.

Ensuite, créez un fichier avec votre nom préféré dans le répertoire .github/workflows. Mais pour cet exemple, le fichier est nommé main.yml. Copiez et collez le code ci-dessous dans le fichier main.yml.

Le code ci-dessous définit et affiche la variable d’environnement API_KEY lorsque le code déclenche le workflow.

name: env_tutorial
## Déclenche le workflow lorsqu'il y a un push ou 
## une pull request sur la branche principale
on: [pull_request, push] 

env:
  ## Définit la variable d'environnement
  API_KEY: XXXXXXXXXXXX    

jobs:
  job1:
    ## Le type de runner sur lequel le job s'exécutera, 
    ## ici il s'exécute sur ubuntu latest
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## Référence vos variables d'environnement
        run: echo "The API key is:${{env.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Une autre façon de référencer vos variables d'environnement
        run: echo "The API key is:$API_KEY"

3. Validez et poussez le code vers votre dépôt GitHub.

git add .
git commit -m "update"
git push
Pushing updates to the GitHub Actions environment variables repository

4. Maintenant, ouvrez votre navigateur web et accédez à votre projet sur GitHub. Cliquez sur l’onglet Actions, puis cliquez sur votre commit actuel.

Vous verrez quelque chose comme l’image ci-dessous, qui montre que GitHub a exécuté le workflow.

GitHub actions Environment variables for repository

5. Enfin, cliquez sur job1 ou job2, et vous verrez que vous avez correctement référencé la variable d’environnement que vous avez initialisée.

Viewing Referenced Environment Variable (job1)
Viewing Referenced Environment Variable (job2)

Définition d’une variable d’environnement pour un travail

Maintenant que vous avez initialisé la variable d’environnement dans l’ensemble du fichier de flux de travail, tout travail peut référencer la variable d’environnement. Mais peut-être voulez-vous seulement qu’un seul travail référence la variable d’environnement. Si c’est le cas, placez le mot clé env dans le travail lui-même.

1. Remplacez le code dans votre fichier main.yml par le code ci-dessous.

Le code ci-dessous montre que lorsque vous placez la variable d’environnement dans un travail particulier, les autres travaux ne peuvent pas référencer la variable d’environnement.

name: env_tutorial
## Déclenche le flux de travail lorsqu'il y a un push, ou 
## une demande de tirage sur la branche principale
on: [pull_request, push] 

jobs:
  job1:
    ## Le type de runner sur lequel le travail s'exécutera
    runs-on: ubuntu-latest 
    env:
      ## Variable d'environnement
      API_KEY: XXXXXXXXXXXX    
    steps:
      - name: step 1
        ## Référencez vos variables d'environnement
        run: echo "The API key is:${{env.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Une autre façon de référencer vos variables d'environnement
        run: echo "The API key is:$API_KEY"  

2. Validez vos modifications et poussez les travaux de votre code vers les variables d’environnement de GitHub Actions comme vous l’avez fait dans la section précédente.

3. Enfin, accédez à votre projet sur GitHub, puis cliquez à la fois sur job1 et job2 pour voir leur comparaison:

  • travail1 – Vous verrez que vous avez référencé parfaitement la variable d’environnement.
  • travail2 – La clé API est vide.
Viewing Referenced Environment Variable (job1)
Viewing Referenced Environment Variable (job2)

Définition d’une variable d’environnement pour une étape

Maintenant que vous avez appris comment spécifier des variables d’environnement dans un travail, vous vous demandez peut-être comment faire la même chose avec les étapes.

Pour les étapes dans un travail, vous spécifiez la variable d’environnement dans l’étape comme vous l’avez fait pour le travail.

1. Remplacez le code que vous avez dans votre fichier main.yml par le code ci-dessous.

Dans le code ci-dessous, vous spécifiez la variable d’environnement dans étape 1 mais pas dans étape 2, et vous verrez l’effet dans les étapes suivantes.

name: env_tutorial
## Déclenche le flux de travail lorsqu'il y a un push, ou 
## une demande de tirage sur la branche principale
on: [pull_request, push] 

jobs:
  job1:
    ## Le type de runner sur lequel le travail s'exécutera
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        env:
          ## Variable d'environnement pour l'étape 1
          API_KEY: XXXXXXXXXXXX    
        ## Référencez vos variables d'environnement
        run: echo "The API key is:${{env.API_KEY}}"   
      - name: step 2
        ## Référencez vos variables d'environnement
        run: echo "The API key is:${{env.API_KEY}}"   

2. Maintenant, validez les modifications et poussez le code sur GitHub.

3. Enfin, accédez à votre projet sur les variables d’environnement des actions GitHub, et cliquez sur travail1.

Même si vous faites référence aux deux clés API dans le même travail (travail1) aux deux étapes, étape 2 n’a pas pu évaluer la clé API (vide), comme indiqué ci-dessous. Pourquoi ? Parce que vous n’avez pas spécifié la variable d’environnement dans étape 2 dans votre code.

Setting environment variables for steps

Gestion des variables d’environnement via les variables d’environnement et les secrets des Actions GitHub

Au lieu de coder en dur, vous voudrez peut-être stocker votre variable d’environnement de manière sécurisée, et les secrets GitHub peuvent le faire. Les variables d’environnement des Actions GitHub cryptent les valeurs que vous mettez dans les secrets, donc elles ne sont ni visibles ni lisibles à l’œil nu.

Le secret créé avec cette méthode est accessible à l’ensemble du flux de travail, des tâches et des étapes ; il n’y a pas de restrictions.

Pour stocker votre variable d’environnement dans les secrets GitHub :

1. Tout d’abord, poussez votre code sur GitHub comme vous l’avez fait dans les sections précédentes.

2. Ensuite, accédez à votre projet sur GitHub et cliquez sur l’onglet Paramètres.

Cliquez sur Secrets dans l’onglet ci-dessous pour commencer à ajouter un secret.

Storing environment variables in Secrets

3. Ensuite, cliquez sur le Nouveau secret de dépôt, et vous verrez un formulaire pour remplir les détails sur le secret que vous ajoutez.

Creating new repository secret

4. Remplissez le formulaire de manière appropriée (Nom et Valeur) et cliquez sur le bouton Ajouter le secret pour soumettre. Maintenant, la API_KEY est enregistrée dans les secrets GitHub. Dans ce formulaire, GitHub définit de manière sécurisée les variables d’environnement en tant que secrets que vous pouvez référencer lors de l’utilisation des Actions GitHub.

Filling name and value of the new secret

5. Modifiez votre fichier main.yml et remplacez le mot-clé env par secrets.

Ci-dessous, vous pouvez voir que vous référencez la clé API dans ce format ${{secrets.API_KEY}} au lieu de coder en dur la clé API elle-même.

name: env_tutorial
## Déclenche le workflow lorsque qu'il y a un push, ou 
## une demande de tirage sur la branche principale
on: [pull_request, push] 

jobs:
  job1:
    ## Le type de runner sur lequel le job sera exécuté
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        ## Référencez vos variables d'environnement
        run: echo "The API key is:${{secrets.API_KEY}}"   

  job2:
    runs-on: ubuntu-latest
    steps:
      - name: step 1
        ## Référencez vos variables d'environnement
        run: echo "The API key is:${{secrets.API_KEY}}"  

6. Enfin, commitez et poussez le code vers GitHub, et accédez à votre projet sur les variables d’environnement de GitHub Actions. Référez-vous à la première section.

Vous verrez quelque chose comme l’image ci-dessous, mais vous ne pouvez pas voir le API_key réel car GitHub crypte les valeurs que vous mettez dans les secrets.

Displaying API key from GitHub Actions environment variables secrets

Référence des variables d’environnement par défaut de GitHub

Il y a quelques variables d’environnement par défaut fournies par GitHub, que vous pouvez utiliser pour accéder aux systèmes de fichiers dans le dépôt au lieu de coder en dur des chemins. Les variables d’environnement par défaut de GitHub vous permettent d’être plus dynamique lors de la référence des variables d’environnement qui vous sont données par GitHub.

Voici quelques-uns des chemins que vous pouvez obtenir avec les variables d’environnement par défaut :

  • GITHUB_JOB – Fournit l’ID du travail en cours.
  • GITHUB_ACTION – Fournit l’identifiant de l’action en cours
  • GITHUB_ACTION_PATH – Fournit le chemin où se trouve votre action.
  • GITHUB_ACTOR – Fournit le nom de la personne ou de l’application ayant initié le flux de travail, comme votre nom d’utilisateur GitHub.
  • GITHUB_RUN_ID – Fournit le numéro unique de la commande run.

Remplacez ce que vous avez dans votre fichier main.yml avec le code ci-dessous. Le code ci-dessous affiche la variable d’environnement par défaut indiquée dans le code.

name: env_tutorial
## Déclenche le flux de travail lorsque qu'il y a un push ou
## une pull request sur la branche principale
on: [pull_request, push] 

jobs:
  job1:
    ## Le type de runner sur lequel le travail s'exécutera
    runs-on: ubuntu-latest 
    steps:
      - name: step 1
        run: |
          echo "The job_id is: $GITHUB_JOB"   # Référence les variables d'environnement par défaut
          echo "The id of this action is: $GITHUB_ACTION"   # Référence les variables d'environnement par défaut
          echo "The run id is: $GITHUB_RUN_ID" 
          echo "The GitHub Actor's username is: $GITHUB_ACTOR"
      - name: step 2
        run: |
          echo "The run id is: $GITHUB_RUN_ID"

Commitez et poussez les modifications de code sur GitHub, vérifiez vos actions dans votre projet d’environnement GitHub Actions variables, et vous verrez quelque chose comme l’image ci-dessous.

Referencing the Default GitHub environment variables

Conclusion

Tout au long de ce tutoriel, vous avez appris à gérer les variables d’environnement GitHub Actions. Vous devriez maintenant avoir une connaissance de base de la manière de stocker les variables d’environnement de manière sécurisée et comment utiliser celles fournies par défaut par GitHub.

Maintenant, comment prévoyez-vous d’incorporer cette nouvelle connaissance lors de votre travail avec GitHub Actions ? Peut-être en sauvegardant les clés API nécessaires pour le déploiement ?

Source:
https://adamtheautomator.com/github-actions-environment-variables/