首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在操作运行的GitHub脚本中访问Bash操作环境变量?

问如何在操作运行的GitHub脚本中访问Bash操作环境变量?
EN

Stack Overflow用户
提问于 2020-01-23 03:38:30
回答 2查看 5.5K关注 0票数 12

我无法从操作运行的脚本中访问在GitHub操作配置文件的顶级定义的环境变量。

例如,给定以下配置文件:

代码语言:javascript
复制
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

..。和以下脚本:

代码语言:javascript
复制
X=${FOO:default}
echo "X: $X" # X: default

配置文件中定义的FOO环境变量对脚本不可用,正在使用默认值。

那么,如何从构建步骤运行的Bash脚本访问环境变量呢?我是不是漏掉了一个前缀什么的?(我知道在input散列中定义的值要求您在引用它们时使用INPUT_前缀。)

EN

回答 2

Stack Overflow用户

发布于 2020-04-16 02:17:01

如果其他人正在寻找解决方案:

您必须显式地将环境变量传递给bash脚本。否则,它们将不可用。

代码语言:javascript
复制
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

在脚本中,您必须将参数映射到一个变量。

代码语言:javascript
复制
X=$1
echo "X: $X" # X: default

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2020-04-25 23:48:22

您可以在any level中使用env,因为根操作也可以在作业和步骤中使用。

我编写了一个测试操作和一个测试脚本来验证它。瞧一瞧。

操作文件:

代码语言:javascript
复制
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

脚本文件:

代码语言:javascript
复制
#!/usr/bin/env bash

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

结果:

代码语言:javascript
复制
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
...

查查我的results here。

事实上,我不知道为什么它在你这边不起作用,因为它必须起作用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59867124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档