pdo*_*926 12 bash github-actions
我无法从操作运行的脚本中访问在 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
Run Code Online (Sandbox Code Playgroud)
...以及以下脚本:
X=${FOO:default}
echo "X: $X" # X: default
Run Code Online (Sandbox Code Playgroud)
FOO配置文件中定义的环境变量对脚本不可用,正在使用默认值。
那么,如何从构建步骤运行的 Bash 脚本访问环境变量?我错过了前缀还是什么?(我知道input散列中定义的值要求您INPUT_在引用它们时使用前缀。)
您可以在任何级别以及作业和步骤中使用 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
Run Code Online (Sandbox Code Playgroud)
脚本文件:
#!/usr/bin/env bash
echo "FOO_ROOT: $FOO_ROOT"
echo "FOO_JOB: $FOO_JOB"
echo "FOO_STEP: $FOO_STEP"
echo " "
printenv
Run Code Online (Sandbox Code Playgroud)
结果:
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
...
Run Code Online (Sandbox Code Playgroud)
检查我的结果,事实上,我不知道为什么它在你这边不起作用,因为它必须起作用。
如果其他人正在寻找解决方案:
您必须明确地将环境变量传递给 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
Run Code Online (Sandbox Code Playgroud)
在脚本中,您必须将参数映射到变量。
X=$1
echo "X: $X" # X: default
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。