无法在作业步骤中更改自定义工作流环境变量

Unable to change a custom workflow environment variable in a job step

我像这样为我的工作区设置了一个环境变量:

env:
  DATA_BRANCH: master

然后我想在其中一个工作步骤中更改它(对于 macos)

echo {DATA_BRANCH=osx} >> $GITHUB_ENV

但这不会改变变量。

我完整的yml文件是:

https://github.com/GrokImageCompression/grok/blob/master/.github/workflows/build.yml

根据 official documentation:

The scope of a custom environment variable is limited to the element in which it is defined.

这意味着如果您在工作流级别、作业级别或步骤级别设置环境变量。 以最具体的为准

在您的情况下,您在工作流级别设置:

env:
  DATA_BRANCH: master

如果您希望特定步骤(或作业)使用另一个值,您只需在该级别设置环境变量为另一个值。

在你的情况下,它看起来像这样:

  steps:
    ...
    - name: macos-dependencies
      if: startsWith(matrix.os, 'macos')
      run: |
        ...
      env:
        DATA_BRANCH: osx

同样值得记住的是,使用 echo name=value >> $GITHUB_ENV 不会将 env 变量添加到当前步骤,而只会添加到以下步骤 (reference):

The step that creates or updates the environment variable does not have access to the new value, but all subsequent steps in a job will have access.

问题是语法错误

echo DATA_BRANCH=osx >> $GITHUB_ENV 是正确的语法 - 不需要大括号。