Comment utiliser des secrets dans les actions Github?
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
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.