如何获取触发 GitHub 操作的事件类型?

K..*_*K.. 18 github-actions

我正在用 JavaScript 编写自定义操作。

在我的 GitHub 操作中,我想根据触发它的事件类型做出决定。例如,它是推送还是 cron 作业。

如何使用 GitHub Actions Toolkit 访问此信息?

Cso*_*mai 35

问题的标题和内容矛盾的。您在标题中提到了事件类型,但问题询问了其他问题:

这是推送还是 cron 作业

这不是事件类型,这是事件名称。可以通过变量访问名称github.event_name并且可以从中读取类型github.event.action。(注意下划线和点之间的区别。)

是的,命名很混乱。在工作流 yaml的下一层on,您可以指定事件名称。您在关键字之后指定的甚至更深一层的内容types也称为“操作”。这是一个例子:

name: Foo
on:
  pull_request:
    types: ["ready_for_review", "converted_to_draft"]

jobs:
  bar:
    runs-on: ["ubuntu-latest"]
    steps:
      - run: echo "event name is:" ${{ github.event_name }} 
      - run: echo "event type is:" ${{ github.event.action }} 
Run Code Online (Sandbox Code Playgroud)

这输出:

event name is: pull_request
event type is: converted_to_draft
Run Code Online (Sandbox Code Playgroud)


sma*_*c89 4

在此页面中,您可以使用GITHUB_EVENT_NAME环境变量。

触发工作流的 Webhook 事件的名称。

如果您正在使用该@actions/github包,它可以让您访问一个context对象,该对象允许您获取事件名称,如下所示:

import {context} from '@actions/github';

console.log(context.eventName);
Run Code Online (Sandbox Code Playgroud)

两种方法都会给你相同的结果。