web-dev-qa-db-fra.com

Comment puis-je accéder aux variables d'environnement d'action GitHub dans un script Bash exécuté par l'action?

Je ne suis pas en mesure d'accéder aux variables d'environnement définies au niveau supérieur d'un fichier de configuration d'action GitHub à partir d'un script exécuté par l'action.

Par exemple, étant donné le fichier de configuration suivant:

name: x-pull-request
on: pull_request
env:
  FOO: bar
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: does a thing
        run: ./scripts/do-a-thing.sh

... et le script suivant:

X=${FOO:default}
echo "X: $X" # X: default

La variable d'environnement FOO définie dans le fichier de configuration n'est pas disponible pour le script et la valeur par défaut est utilisée.

Alors, comment puis-je accéder à la variable d'environnement à partir d'un script Bash exécuté par l'étape de construction? Est-ce que je manque un préfixe ou quelque chose? (Je sais que les valeurs définies dans le hachage input vous obligent à utiliser un INPUT_ préfixe lors de leur référencement.)

7
pdoherty926

Vous pouvez utiliser env à n'importe quel nivea , depuis l'action racine, également dans job et step.

J'ai écrit une action de test et un script de test pour le valider. Regarde.

Le fichier action:

name: Env tests
on: Push

env:
  FOO_ROOT: bar on root

jobs:
  test:
    runs-on: ubuntu-latest
    env:
      FOO_JOB: bar on job
    steps:
      - uses: actions/checkout@v1
      - name: Test envs
        run: ./env-test.sh
        env:
          FOO_STEP: bar on step

Le fichier script:

#!/usr/bin/env bash

echo "FOO_ROOT: $FOO_ROOT"
echo "FOO_JOB: $FOO_JOB"
echo "FOO_STEP: $FOO_STEP"
echo " "
printenv

Les resultats:

FOO_ROOT: bar on root
FOO_JOB: bar on job
FOO_STEP: bar on step

LEIN_HOME=/usr/local/lib/lein
M2_HOME=/usr/share/Apache-maven-3.6.3
...

Vérifiez le mien résultats ici .

En fait, je ne sais pas pourquoi cela n'a pas fonctionné de votre côté, parce que cela doit fonctionner.

2
Tiago Gouvêa

Si quelqu'un d'autre cherche une solution:

Vous devez explicitement transmettre les variables d'environnement au script bash. Sinon, ils ne sont pas disponibles.

name: x-pull-request
on: pull_request
env:
  FOO: bar
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v1
      - name: does a thing
        run: ./scripts/do-a-thing.sh $FOO

Et dans le script, vous devez mapper le paramètre à une variable.

X=$1
echo "X: $X" # X: default

J'espère que cela t'aides.

0
Patrick Lauhof