web-dev-qa-db-ja.com

アクションによって実行されるBashスクリプト内のGitHubアクション環境変数にアクセスするにはどうすればよいですか?

アクションによって実行されるスクリプト内から、GitHubアクション構成ファイルのトップレベルで定義された環境変数にアクセスできません。

たとえば、次の構成ファイルがあるとします。

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ハッシュで定義された値は、それらを参照するときにINPUT_接頭辞を使用する必要があることを知っています。)

7
pdoherty926

ルートアクションなので、ジョブとステップでも 任意のレベル でenvを使用できます。

テストアクションとそれを検証するためのテストスクリプトを作成しました。見てください。

アクションファイル:

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

私のチェック 結果はこちら

実際、なぜあなたの側でうまくいかなかったのかはわかりません。

2
Tiago Gouvêa

他の誰かが解決策を探している場合:

環境変数を明示的に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

お役に立てれば。

0
Patrick Lauhof