如何在 GitHub Actions 中扩展现有的环境变量?

5

工作流程中的一步需要设置环境变量。类似下面的代码示例在 Github Actions 中是否可行?

示例:

- name: Do Something
  env:
      NEW_VAR: $EXISTING_VAR/subdir
      
  run: |
      echo $NEW_VAR
       

我知道,我可以直接使用环境变量,但通过连接旧变量来构造新的环境变量会更好。

还有${{ env.EXISTING_VAR }},但看起来这个表达式没有被计算。


你曾尝试过像这样的代码 "$EXISTING_VAR/subdir",其中包含引号。 - Thiago Da Anunciação
jep不起作用。旧变量将不会被扩展。 - user8725011
看起来这是不可能的。 - user8725011
看起来 GitHub Actions 无法从虚拟环境中访问系统环境变量,只能访问提供的变量。希望我的假设是错误的。 - user8725011
2个回答

3

2022年更新

语法已更改:::set-env 已被弃用,并被环境文件所取代。这意味着您可以在一个步骤中设置新的环境变量,并在后续步骤中使用它。语法如下:

...
- name: Set env variable
  run: |
    echo "NEW_VAR=${{ env.EXISTING_VAR }}/subdir/${{ env.OTHER_EXISTING_VAR }}" >> $GITHUB_ENV
- name: Use env variable
  run: |
    echo ${{ env.NEW_VAR }}
...

需要注意的是,在同一步骤中,我无法设置并使用新的环境变量。以下是一个不起作用的示例:

...
- name: Set env variable
  run: |
    echo "VAR_FROM_THE_SAME_STEP=${{ env.EXISTING_VAR }}" >> $GITHUB_ENV
    echo "NEW_VAR=${{ env.EXISTING_VAR }}/subdir/${{ env.VAR_FROM_THE_SAME_STEP }}" >> $GITHUB_ENV
...

在这种情况下,解决${{ env.VAR_FROM_THE_SAME_STEP }}将不起作用,您需要在随后的步骤中执行此操作,在大多数情况下这并不是什么大问题。


0

还有一种设置环境变量的方法。

试试这样做:

- name: Set env to qa
  run: |
    echo "::set-env name=ENVIRONMENT::qa"

虽然这个方法对我也有效:

ECS_DOCKER_COMPOSE: "docker-compose-$ENVIRONMENT.yml"

但我猜 GitHub actions 不支持“/”。

你尝试过不加斜杠吗?


好的,你正在将一个名为 ENVIRONMENT 的变量设置为 qa,这也可以通过作业的 env 键完成,但我正在寻找一个连接操作 :) - user8725011
我知道这一点,因此我写了“还有另一种设置环境变量的方法”,第二个例子是设置一个名为ECS_DOCKER_COMPOSE的连接环境变量,这两个例子在同一个GitHub工作流中运行得非常好。 :) - Thiago Da Anunciação
抱歉,感谢您的帮助,但似乎无法正确设置环境变量(在我的端上)。您有特定示例的链接吗? - user8725011
1
当然,请跟随此链接:(https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable) - Thiago Da Anunciação

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接