前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义接口触发github Action

自定义接口触发github Action

作者头像
biaoblog.cn 个人博客
发布2022-08-11 19:59:11
5370
发布2022-08-11 19:59:11
举报

上一篇文章说了 正常情况下 触发github action 是监听仓库分支的merge 和 push事件来触发

代码语言:javascript
复制
on:
  push

但是有时候 我们想通过一个api的形式来触发action 该怎么弄呢

可以使用监听仓库的repository_dispatch(自定义派发事件)

1.首先创建一个 Token

访问链接页面 https://github.com/settings/tokens/new 申请一个 Token。

需要勾选 repo 权限。

2.然后去创建yml文件(跟上篇文章一样 还是用appleboy/ssh-action@master来登录ssh)

写入:

代码语言:javascript
复制
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.run/info?id=1628044347419

3 远程触发 Github Action

下面是 API 调用格式:

代码语言:javascript
复制
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:

代码语言:javascript
复制
  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文件即可!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.首先创建一个 Token
  • 3 远程触发 Github Action
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档