Comment utiliser des secrets dans les actions Github?

Oct 06 2020

J'ai l'impression que c'est une question vraiment stupide mais je n'arrive pas à la comprendre. J'ai mis en place un projet node.js vraiment simple avec API_KEYun secret.

Dans l' action nodejs yml, j'ai ce qui suit:

    steps:
    - uses: actions/checkout@v2
    - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }}
      env:  
        API_KEY: ${{ secrets.API_KEY }} 
    - run: export 
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test

API_KEYne s'affiche pasexport comme je m'y attendais ni ne le montre quand je console.log(process.env).

Selon la documentation , cela devrait fonctionner tel quel. J'ai l'impression de manquer quelque chose de vraiment simple.

Ce n'est pas un fork comme suggéré dans cette question stackoverflow .

Que me manque-t-il pour obtenir l'API_KEY disponible dans mon script de nœud?

Réponses

1 BenjaminW. Oct 06 2020 at 22:04

Les variables d'environnement peuvent être définies à trois niveaux:

  • Globalement: une carte de premier niveau appelée env
  • Au niveau par poste: en jobs..env
  • Au niveau par étape: en jobs..steps.env

La préférence est donnée à la variable la plus spécifique disponible. Par exemple:

env:
  VAR: I am global
jobs:
  job1:
    steps:
      - run: echo "$VAR" # "I am global" job2: env: VAR: I am on the job level steps: - run: echo "$VAR"  # "I am on the job level"
      - env:
          VAR: I am on the step level
        run: echo "$VAR" # "I am on the step level" - run: echo "$VAR"  # "I am on the job level"

Pour définir une variable d'environnement dans une étape, de manière dynamique, et la rendre disponible pour d'autres étapes, vous devez utiliser un fichier d'environnement (cela a récemment changé par rapport à l'utilisation des commandes de flux de travail, qui sont désormais obsolètes pour les variables d'environnement):

steps:
  - name: Set the variable
    run: echo "foo=bar" >> "$GITHUB_ENV" - name: Print the variable run: echo "$foo"  # bar

L'ancienne méthode, désormais obsolète, le définirait comme ceci:

run: echo "::set-env name=foo::bar"

mais cela déclenche maintenant un avertissement d'obsolescence.