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.)
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.
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.