GitHub Actions 如何手动触发
前言
GitHub Actions 在早期可能是处于初级开发阶段,它的功能非常原生,甚至没有直接提供一个手动触发按钮。一般的触发方式为代码变动(push
、pull_request
),发布文件(release
)或者定时(schedule
)等,这些属于自动触发方式。如果我们需要在 GitHub 仓库没有任何变动的情况下手动触发就需要使用一些奇技淫巧。经历了漫长的功能迭代,官方最终正式带来了手动触发功能,这也宣告了一个瞎折腾时代的结束,一个崭新的折腾时代开始。
手动触发
workflow_dispatch
在时隔多年后 GitHub Actions 终于引入了一个手动触发的按钮,不过默认是不开启的,需要在 workflow 文件中设置 workflow_dispatch
触发事件。一个最简单的例子:
1 | on: |
设置好触发事件后就能在相关 workflow 的页面下看到 Run workflow
按钮。
需要注意的是,正如官网所说你的这个 workflow 必须是在默认分支上。
更复杂一点还可以实现在手动触发时填写参数,控制不同的工作流程或者直接改写某个环境变量等操作。目前官方文档已经相当完善,想要去深入可以去查看。
一个填写参数的例子:
1 | name: Manual Trigger |
如果我们在配置中定义了参数,则手动执行时也会需要填参数。上面在workflow_dispatch
下通过定义inputs
设定参数。在jobs
中我们则可以在github.event.inputs
中取到对应的参数。下面是上述代码运行结果:
repository_dispatch
repository_dispatch让用户通过 API 批量手动执行,这个 event 的主要作用是让其他的程序通过 api 调用,通过自定义事件类型来驱动执行,这个 event 对应的 workflow 也必须在默认分支下定义。具体可参考官方文档,下面是个简单例子
比如我们定义:
1 | on: |
然后执行 http 请求:
1 | curl \ |
那么就可以被执行了,其中的opened
, deleted
是我们自定义的事件名字,client_payload
是我们自定义的额外信息数据。
运行如下:
1 | curl --location --request POST 'https://api.github.com/repos/MrSeaWave/lerna-demo/dispatches' \ |
其中在Authorization
一览中增加在github
中申请的token
,否则容易出现"message": "Not Found"
的结果,就像这个问题一样。
上面运行成功结果:
更多用法请关注 Github 官网~
参考链接
GitHub Actions 如何手动触发
https://hailangya.com/articles/2021/12/17/github-actions-manual-trigger/