Github + Webhooks简易的自动化部署流程

机器可以做的事就应该交给机器去做。说一下Github项目和linux的自动化部署流程及实现。

简单说,我们的项目分开发生产两种模式,最终是要run在生产环境的,产品在两者之间切换时会有一些问题的产生,比如生产环境下的配置、账密、构建编译、打包、重载..., 这其实涉及到持续集成部分,但一个完备的持续集成挺复杂的,我就只说部署。

Js栈的程序是相对最好部署的,直接pm2开启watch就可以了,程序挂了、内存溢出了、文件更新了...就自动重启了,虽然也还是有一些小问题。

核心:需要在自己本地push项目之后,远程服务器自动pull代码,然后该buildbuild,该重启重启

OK,Github提供了Webhooks功能,就是回调钩子,不过是web形式的回调,所以叫webhooks,给其一个线上服务器地址,加一些简单的配置(比如Secret、请求头之类的), 在你对应项目发生一些动作的时候 [ 如:push、commit...,这些动作也是需要你自己配置的 ],他会自动以 [ POST + 一堆项目相关的数据 ] 回调这个地址,然后服务端再用脚本处理,该干嘛干嘛,比如可以执行对应项目的shell啦,执行reload啦,都OK。

同时添加webhooks成功后,你可以看到自己它每一次请求部署服务器的记录,详细到每一块数据,以及部署服务器返回的响应状态,还可以手动重新请求。

Github的Webhooks,在这里:

https://static.surmon.me/17-2-22/32497107-file_1487733506069_e571.png

https://static.surmon.me/17-2-22/60242053-file_1487733715836_47ac.png

https://static.surmon.me/17-2-22/14168178-file_1487733723968_106b3.png

应该大部分git服务都有webhooks功能,coding反正也有。

OK,部署服务端也没有那么麻烦,像我这种没有部署服务器的,就在生产服务器开个端口就行了,最终我用了#github-webhook-handler这个项目,简单快速,run起来也就20M左右, 基于http的,其实就是简单对github的数据和头封装了一下,同时好像是对github的哈希进行了校验处理,不需要手动验证Secret,我的部署代码都在这里了,快去试试吧,还是能节省一些工作量的。

本文于 2017/2/15 上午 发布在 Code 分类下,当前已被围观 1202 次

相关标签:互联网GitGithub

永久地址:https://surmon.me/article/6

版权声明:自由转载-署名-非商业性使用  |  Creative Commons BY-NC 3.0 CN
  • 小忆
    小忆Mac OS XChrome | 58CN - Chengdu#270

    webhook是如何做到post跨域请求的?能解释一下吗? 我查了很多资料,还是不了解

  • Surmon
    SurmonMac OS XChrome | 63CN - Guangzhou#436

    回复 #270 @小忆

    webhook 是 [ github ] 的服务端向你的 [ 目的地服务端 ] 发起请求,不存在跨域