Github-Action-Day12:关于你的工作流的信息

这是我的 Github Action Advent Calendar 的第十二天的内容,如果您想要了解更多已经发布的 tips 信息,查看此处的 索引

昨天我们了解到, Github 提供了一些信息供以 Github Action 工作流的运行,它被命名为 GITHUB_TOKEN。但这还不是全部,那么 Github Action 还提供了哪些其他信息给您呢?

实际上,还真的不少。

Github Action 配置了一批 富有信息量的 “contexts” ,它们拥有关于您的 workflow 运行的数据。例如,github context 就包含了一些信息,比如您的 workflow 正在运行所在的仓库名 — github.repository,以及启动这个 workflow 运行的用户 — github.actor。 你同样可以使用我们在 matrixessecrets 中使用的双花括号扩展语法的方式引用这些信息:

image-20210825160325452

如果您想要查看Github Action 在 context 中提供给我们的所有信息,你可以使用 toJson 函数输出整个对象:

image-20210825171126372

如果你这样做了,您将注意到 Github context 中其实有大量的信息。特别地,github.event 对象本身就是一个巨大的 json 数据块。它包括了最基础的触发器相对应的 webhook payload

同样的的事件负载 (event payload) 对象保存在磁盘中,位于 github.event_path 。所以您可以通过检查 json 文件内容来获取 workflows 中所有的信息。幸运地是,jq 这个优秀的工具已经安装在了 runner 中。您可以使用它在命令行中分离 json (文件中的)数据。

Translate Note:

命令行中的对象 github.event = github.event_path 路径中对应的 json 文件内容

前者是定义好的 json 对象,可以直接输出;后者是一个文件,需要使用 jq 解析。

例如,如果我想获取我的仓库中有多少 stars,有多少 forks,我可以使用 jq 解析这个保存在 github.event_path 中的 json 数据。

image-20210825163753980

Github Action 提供了大量关于您的仓库、触发这次运行的 action、以及环境变量的数据 — 所有的这些数据都使您能够创建工作流 (workflows) ,以构建、部属您的应用,或是自动化您的仓库中的某些任务。