YAN7 / blog-auto-build

博客利用webhook自动部署服务

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

利用github的webhook实现自动化部署

webhook是github提供的一个钩子函数,其功能是仓库发生一些事件时(比如push)会触发这个钩子函数,而这个钩子的主要功能是发送一个接口到你的服务器上了,你的服务器接收到这个接口后根据接口的参数做相对应的处理,最常用的就是用脚本实现自动打包啦.这样你只要部署了代码就会自动通知服务器上的仓库重新build一个生产包出来,这就是所谓的自动化部署啦.以下实现这个功能的步骤.

github上的操作

  1. 首先进入你要实现自动化部署的仓库,然后点击这个仓库的setting,找到webhook选项,然后新建一个webhook,这样只要输入你的接口url和secret就可以了,你还可以自定义触发这个钩子的事件,push是默认选中的,我还选了pll request.然后点击保存就可以了.之后在这个webhook的最下面可以看到接口请求列表,点击接口可以展示详情的接口信息.

自己的服务器设置

  1. 新建一个项目,常规的 npm init, git init.
  2. 这个有一个专门处理webhook的库github-webhook-handler, 我们安装它 npm i github-webhook-handler -S;
  3. 新建一个index.js文件.对接口参数的处理;
  4. 新建一个autoBuild.sh,这里写请求成功后要做的处理,一般是npm i这类的,为了验证是否触发,我们可以先写一个最简单的脚本: echo hello world!;
  5. 将这个项目push到github,然后在服务器中clone这个项目;
  6. 在服务器中启动并持久化这个项目,我用的是pm2启动;
  7. 设置nginx,设置一个二级域名并代理到这个项目启动的端口;
  8. 在自己的域名中添加解析这个二级域名;
  9. 然后重启nginx;
  10. 到这一步就大功告成了,你可以push一个测试代码到remote,看是否触发成功.如果终端输出hello,则表示触发成功,大功告成!

todo

  • 实现真正的打包脚本
  • 根据接口参数实现一个接口可以自动化部署多个项目

About

博客利用webhook自动部署服务


Languages

Language:JavaScript 97.4%Language:Shell 2.6%