理想是火,点燃熄灭的灯。
上一篇文章说了 正常情况下 触发github action 是监听仓库分支的merge 和 push事件来触发
on: push
但是有时候 我们想通过一个api的形式来触发action 该怎么弄呢
可以使用监听仓库的repository_dispatch(自定义派发事件)
访问链接页面 https://github.com/settings/tokens/new 申请一个 Token。
需要勾选 repo 权限。
2.然后去创建yml文件(跟上篇文章一样 还是用appleboy/ssh-action@master来登录ssh)
写入:
on: repository_dispatch: types: - backupBlogData jobs: run: runs-on: ubuntu-latest steps: - name: executing remote ssh commands # 使用appleboy/ssh-action@master来执行命令 uses: appleboy/ssh-action@master with: host: ${{secrets.DEPLOY_HOST}} username: ${{secrets.DEPLOY_USER}} password: ${{secrets.DEPLOY_PASS_WORD}} script: cd /usr/local/mongodb/bin/ && ./mongodump -h 127.0.0.1:27017 -d xx -o /xx/xx -u ${{secrets.dbU}} -p ${{secrets.dbP}}
mongoDB数据的备份 参考 http://biaoblog.cn/info?id=1628044347419
下面是 API 调用格式:
curl -X POST https://api.github.com/repos/:owner/:repo/dispatches \ -H "Accept: application/vnd.github.everest-preview+json" \ -H "Authorization: token TRIGGER_TOKEN" \ --data '{"event_type": "backupBlogData"}'
其中,owner
是用户名,repo
是仓库名, TRIGGER_TOKEN
是上面申请的 Token 凭证,TRIGGER_EVENT
是自定义的事件名。
前端也可以使用axios:
await axios .post( "https://api.github.com/repos/Bill-Pang/Koa-blog/dispatches", { event_type: "backupBlogData", }, { headers: { Accept: "application/vnd.github.everest-preview+json", Authorization: "token ", }, } ) .then((res) => { console.log(res); ctx.body = { code: 200, message: "数据备份任务提交成功,请自行检查备份文件,此服务无法监听action异步回调", }; }) .catch((err) => { ctx.body = { code: 500, msg: "数据备份任务提交失败,检查后端服务" }; });
然后就看到action跑起来了
遇到一个问题....
如果想自动构建监听push和自定义事件 同时存在 切互不影响。。
可以再单独写个yml文件即可!
作者: Bill 本文地址: http://biaoblog.cn/info?id=1653640979957
版权声明: 本文为原创文章,版权归 biaoblog 个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!