如何在 GitHub Actions 中使用 bash 表达式设置 env var?

在 GitHub Actions 中,我希望计算一个 bash 表达式,然后将其分配给一个环境变量:

    - name: Tag image
env:
GITHUB_SHA_SHORT: ${{ $(echo $GITHUB_SHA | cut -c 1-6) }}
..do other things...

然而,这种幼稚的尝试失败了。 根据文件记录似乎不支持这种做法; 一个稍微干净一点的解决方案就可以了。

101915 次浏览

这个问题的原始答案使用了 Actions runner 函数 set-env。由于 安全漏洞 set-env已被弃用,不应再使用。

这是设置环境变量的新方法。

name: my workflow
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set env
run: echo "GITHUB_SHA_SHORT=$(echo $GITHUB_SHA | cut -c 1-6)" >> $GITHUB_ENV
- name: Test
run: echo $GITHUB_SHA_SHORT

设置环境变量 echo "{name}={value}" >> $GITHUB_ENV

为作业中接下来运行的任何操作创建或更新环境变量。创建或更新环境变量的操作不能访问新值,但作业中的所有后续操作都能访问。环境变量区分大小写,可以包括标点符号。

(来自 https://help.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable)

使用 $GITHUB _ ENV 方法的输出示例:

    echo "GITHUB_SHA_SHORT=$(echo $GITHUB_SHA | cut -c 1-6)" >> $GITHUB_ENV

这是参考工作流程环境变量的另一种方法。

    - name: Test
run: echo $\{\{ env.GITHUB_SHA_SHORT }}

文档 https://docs.github.com/en/free-pro-team@latest/actions/reference/environment-variables#about-environment-variables描述了定义环境变量的两种方法。

要设置自定义环境变量,您需要指定这些变量 您可以为某个步骤定义环境变量, 作业,或者使用作业的整个工作流, 作业。 < job _ id > . env 和 env 关键字。

steps:
- name: Hello world
run: echo Hello world $FIRST_NAME $middle_name $Last_Name!
env:
FIRST_NAME: Mona
middle_name: The
Last_Name: Octocat

您还可以使用 GITHUB _ ENV 环境文件来设置环境 工作流中的下列步骤可以使用的 环境文件可以直接由操作使用,也可以作为 shell 使用 命令在工作流文件中使用 run 关键字。