Github Action 各个 Setp 之间是互相独立的,所以假如我们在 A Step 中定义了一个环境变量,在接下来的 Step 中是无法使用的。

那么怎么共享呢?在最新的 Github Action 中,可以通过 Environment files 来实现。

Environment files

它的做法是通过一个环境变量配置文件,在各个Step之间共享自定义环境变量。

官方的例子如下所示:

steps:
  - name: Set the value
    id: step_one
    run: |
      echo "action_state=yellow" >> "$GITHUB_ENV"
  - name: Use the value
    id: step_two
    run: |
      printf '%s\n' "$action_state" # This will output 'yellow'

echo "action_state=yellow" >> "$GITHUB_ENV" 这段就是关键代码了。

被抛弃的 set-env

如果你在 Google 上搜索过这个问题的话,你可能会搜到这篇文章:GitHub Actions 第15天:在步骤之间共享数据

这篇文章中提到的 set-env 方法,在后续的 Github Action 中被禁止使用了,详见官方博文:GitHub Actions: Deprecating set-env and add-path commands

在本文撰写时,如果在 Github Action 中没有经过任何配置地去使用 set-env 的话,会直接报错,Step 执行失败。

“Environment files” 的做法也并不麻烦,反而觉得比 set-env 简单很多,所以就使用上面的方法吧。