Как я могу получить доступ к переменным среды GitHub Action в скрипте Bash, запущенном Action? - PullRequest
6 голосов
/ 22 января 2020

Я не могу получить доступ к переменным среды, определенным на верхнем уровне файла конфигурации GitHub Action, из скрипта, запускаемого действием.

Например, учитывая следующий файл конфигурации:

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

... и следующий сценарий:

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

Переменная среды FOO, определенная в файле конфигурации, недоступна сценарию, и используется значение по умолчанию.

Итак, как мне получить доступ к переменной среды из скрипта Bash, запущенного на этапе сборки? Я пропускаю префикс или что-то? (Я знаю, что значения, определенные в input га sh, требуют, чтобы вы использовали префикс INPUT_ при обращении к ним.)

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Вы можете использовать env на любом уровне , поскольку действие root, также в задании и шаге.

Я написал тестовое действие и тестовый скрипт для его проверки. Взгляните.

Файл действия:

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

Файл сценария:

#!/usr/bin/env bash

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

Результаты:

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

Check mine результаты здесь .

На самом деле, я не знаю, почему это не сработало на вашей стороне, потому что это должно сработать.

0 голосов
/ 15 апреля 2020

Если кто-то ищет решение:

Вы должны передать все переменные окружения в сценарий bash. В противном случае они не доступны.

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

И в скрипте вы должны сопоставить параметр с переменной.

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

Надеюсь, это поможет.

...