完整的Github Actions上下文列表

23

在研究如何在github actions中查找特定文件的“基本”版本,并使用Pull Request的(“head”)文件版本进行差异比较时,我在各种来源(例如github.communitygithub.com/actions/checkout README file中的代码示例)中发现了以下上下文变量是可用的:

  • github.ref
  • github.sha
  • github.event.pull_request.head.ref
  • github.event.pull_request.head.sha
  • github.event.pull_request.base.ref
  • github.event.pull_request.base.sha

然而,除了前两个(github.refgithub.sha)以外,我在任何github actions文档中都找不到其他四个变量。

我的问题是: 是否有任何地方记录了可用上下文变量的完整列表?

例如,我找到了found this,但它仅列出了从github上下文对象向下一级的上下文变量。我找不到上面提到的更深层次嵌套变量的文档。可能还有其他非常有用的上下文变量,但我似乎找不到一个完整的列表,只有那些碰巧在各种代码示例中被提及并散布在各处。

2个回答

28

我觉得你想要区分上下文变量和有效载荷。

大多数情况下都可以使用上下文变量,异常情况已经有文档记录(正如你所发现的):https://docs.github.com/en/actions/learn-github-actions/contexts#example-printing-context-information-to-the-log

而有效载荷则取决于事件类型。如果你通过on: pull_request运行工作流,你将获得与通过on: push运行时不同的有效载荷(等等...)。

我从未见过列出所有有效载荷的文档,但我相信你可以从 Webhooks 中获得灵感。例如,如果你在创建拉取请求时运行工作流,你可以查看此处关于拉取请求的 Webhook 有效载荷:https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#webhook-payload-example-33

由于这两个不是被记录为相同的,您可能需要退回到只转储一个事件并检查实际获取到的内容。在docs中,GitHub提供了一个示例,说明如何将上下文作为工作流的一部分进行转储:

jobs:
  one:
    runs-on: ubuntu-latest
    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJSON(github) }}
        run: echo "$GITHUB_CONTEXT"

2
谢谢。这很有帮助。我其实一直在想把上下文信息“倾倒”出来以便探索,但是无法想到如何实现。然后,你提到了这个问题,一个快速的搜索发现了这个链接:https://docs.github.com/en/actions/learn-github-actions/contexts#example-printing-context-information-to-the-log-file 谢谢。希望这会给我提供所需的所有信息。 - Daniel Goldfarb
2
如果你在寻找一个快速打印/记录所有Actions上下文进行调试目的的答案时偶然发现了这个答案,那么有一个行动可以让你用一行代码实现:- uses: crazy-max/ghaction-dump-context@v1 - V. Rubinetti
1
我上面评论的链接地址已更改。新的链接是: https://docs.github.com/zh/actions/learn-github-actions/contexts#example-printing-context-information-to-the-log - Daniel Goldfarb

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接