在 GitHub Actions 的任务中,你可以有多个步骤 ,一个接一个地运行。每个步骤可能是调用一个操作(例如,检出存储库中的代码安装特定版本的Node.js),也可能是一个 run,仅运行你提供的脚本的步骤。

但是通常你希望与之前执行的步骤进行交互,例如,你可能希望运行一个步骤来更新软件的版本号,以使其准备好发布。然后,你可能需要在实际的发布步骤中使用该版本号。

但是,如何来回获取这些数据?GitHub Actions在其自己的流程中运行你的每个步骤。这意味着你不能只在一个步骤中设置环境变量,然后在另一步骤中引用它。换句话说,这将无法正常工作:

steps:
# 这将 **无效**。这两个 `run` 步骤被编写为
# 作为不同的脚本并由不同的shell运行,因此
# `FOO` 变量将不会在它们之间持久存在。
- run: export FOO=bar
- run: echo $FOO

但是,GitHub Actions 确实为你提供了将数据持久保存在执行环境中的工具。你可以通过写入标准输出(即,仅使用echo)来向GitHub Actions编写命令──包括指示 GitHub Actions 在后续运行步骤中设置环境变量的命令

在当前shell中设置环境变量之后,可以对GitHub Actions 使用命令 set-env ,这将是环境变量被注入到以后的步骤中:

steps:
# 这将会在第一个 `run` 脚本中设置 `FOO` 环境变量。
# 然后指示 GitHub Actions 在随后的运行步骤中使其可用。
- run: |
export FOO=bar
echo "::set-env name=FOO::$FOO"
- run: echo $FOO

现在,实际上可以在后续步骤中获取环境变量 FOO 中的数据。

image

GitHub Actions将这些步骤作为单独的脚本运行──这意味着在单独的Shell调用中运行并每次都获得原始环境。但是,使用GitHub Actions平台内的开发工具,你可以在调用之间共享数据。

原文链接:https://www.edwardthomson.com/blog/github_actions_15_sharing_data_between_steps.html

GitHub repo: qiwihui/blog

Follow me: @qiwihui

Site: QIWIHUI