104

在 GitHub Actions 中,我想评估一个 bash 表达式,然后将其分配给一个环境变量:

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

然而,这种天真的尝试失败了。根据文档,这似乎不受支持;一个有点干净的解决方法就可以了。

4

2 回答 2

195

这个问题的原始答案使用了 Actions runner function 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 }}
于 2019-09-17T07:43:51.120 回答
-5

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

要设置自定义环境变量,您需要在工作流文件中指定变量。您可以使用 jobs.<job_id>.steps[*].env、jobs.<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 环境文件来设置工作流中以下步骤可以使用的环境变量。环境文件可以由操作直接使用,也可以使用 run 关键字作为工作流文件中的 shell 命令使用。

于 2020-12-27T11:11:50.567 回答