瞎折腾之Webhooks
之前听学长介绍过webhooks,也知道有这个东西,但没有真正的用于项目部署,长久以来一直过着“刀耕火种”的生活......长久以来,都是这么更新代码的:

由于之前做的项目刚刚上线,需要对其进行持续的维护,而项目所在的服务器只能通过内网登录,出了校门就不行了,就想起了webhook,决定要搞一下方便后期部署。
刚开始找到了Bitbucket的官方文档中的webhooks部分,头都要大了,但是勉强能看懂些。

后来参照其它人的部署代码,琢磨出了自己的一套部署。
大致流程是这样的:webhooks可以通过监听push触发回调,发送post请求到所指定的地址,服务端收到该请求进行对应的git pull更新代码的操作。

新建webhook:找到项目的weebhooks。Add new webhook创建一个webhook。Title用以区分不同的webhook, URL是你所指定的POST请求的接口地址(如果还没有定义好,可以临时填一个网址如http://baidu.com也可以,后期接口完成后再改),其它默认。点击save时,webhook会发送一个测试请求,用于测试url的有效性。测试通过后就成功的创建了一个webhook。

构建对POST请求处理接口:以nodejs为例。在服务器上创建webhook的POST请求对应的处理接口。收到请求后就代表开发者向github或bitbucket中push了新的代码,我们只需要进入项目根目录,执行git pull origin master(按实际情况填写,不一定是origin master)拉取代码更新就ok了。
首先,在express中建立一个路由地址,通过引入一个插件shelljs执行进入目录,执行更新的shell操作就可以了。对于同步操作,它会返回一个对象,通过判断对象的code是否等于0来判断执行状态。当然了,express是我偷懒的写法,也可以直接用node的http模块来处理post请求。

部署:部署的时候,需要让该服务常驻后台,在这里,推荐forever或者pm2进行部署,易上手。
测试:代码部署完毕后,将webhook的url和服务器的url进行比对看是否一致,如果一致了,就可以通过push更新代码,之后在gitlab/github/bitbucket的webhooks查看对应请求的状态。

(url为测试地址,请填写自己服务器接口的真实地址)
点击View requests查看对应的请求状态。如果返回200OK,代表代码已经成功更新。
总结:有了webhook,以后我们部署更新代码的时候,就只用git push就好了,不用再登录服务器进行一步步的更新,真是方便多了,也适用于项目部署自动化的一部分吧。
第一次写博文,大家有什么意见尽管发表,别喷的太厉害就行。欢迎大神指导。
瞎折腾之Webhooks的更多相关文章
- 瞎折腾之 NHibernate ORM框架的接触(MVC + Repository源码)(一)
在这炮火连天.技术更新迅猛的年代,不接触了解.甚至会用2~3种框架都不好意思说自己有多少年工作经验.况且出去面试也会有点吹牛的底子嘛. 这次折腾了NHibernate.其实这些ORM框架封装好了都是给 ...
- Hexo瞎折腾系列(9) - 网页标题崩溃特效
前言 本系列的所有修改均基于本系列第一篇中的新增文件(譬如custom.js),请先自行阅读Hexo瞎折腾系列(1) - 准备工作与简单美化:并按照文章所说自行修改代码或文件. 为网页添加标题崩溃特效 ...
- 刚接触Joomla,写一下瞎折腾的初感受~
我这几天一直在苦苦寻找一款能够长期投靠的CMS产品,要求的是 1)必须支持命名空间 2)必须OOP + MVC分层 3)丰富分文档和使用群体,至少是出名的.免得哪一天他们解散了 4)-- 一開始我把目 ...
- 瞎折腾-CentOS 7.4 编译4.16.2版kernel 并安装
CentOS 7.4下 原内核版本: 3.10.0-693.el7.x86_64 改后内核版本: 4.16.2 系统版本: CentOS-7-x86_64-Minimal-1708.iso 运行环境: ...
- Deepin20 LNMP环境搭建(又一个瞎折腾的经历)
背景 最近头脑发热,想安装个Linux系统来办工,所以安装了Deepin20的系统,折腾了一天的LNMP的环境,记录一下瞎折腾的过程. lnmp 是一个常见的web开发的环境 nginx 如果安装过可 ...
- 瞎折腾之 VS2013 Cordova项目的创建与配置
扯淡 什么是Cordova ? 网上查询的说明: Cordova是贡献给Apache后的开源项目,是从PhoneGap中抽出的核心代码,是驱动PhoneGap的核心引擎.你可以把他想象成类似于Webk ...
- 瞎折腾之 Lucene.Net + MVC 搜索功能(上)
前言 首先,关于Lucene.Net 的文章已经很多了.我这次决定写出来只是为了练练手,虽然在别人看来没什么用,但是自己确实是手动实践了一把.我个人觉得还是有意义的.爱折腾.敢于实践.才能有所收获,才 ...
- Hexo瞎折腾系列(8) - 添加评论系统
前言 Hexo的NexT主题本身就集成了一些评论系统,多说啊之类的已经关闭服务的略过不提,目前比较多人用的有畅言.来必力livere.Gitment.Gitalk.Disqus等. 我刚用的评论系统的 ...
- Hexo瞎折腾系列(2) - 添加背景图片轮播
动态背景图片插件jquery-backstretch jquery-backstretch是一款简单的jQuery插件,可以用来设置动态的背景图片,以下是官方网站的介绍. A simple jQuer ...
随机推荐
- crontab定时任务-干货案例
自定义需求:实现消息队列. 1.创建一张mysql表结构 2.编写php脚本,便于sh文件执行 3.编写sh脚本,便于crontab定时执行 4.crontab -e 注册定时任务,如果此步不清楚请参 ...
- SQLserver数据库连接问题
可能安装好之后数据库的端口1433被防火墙拦截了,查看端口是否在监听当中: 在cmd里输入命令 :netstat -an 查看是否处在监听中,如果没有进入下面的设置, C:\Windows\SysWO ...
- R语言学习笔记:基础知识
1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...
- testng入门教程6 TestNG忽略测试
有时,我们的代码是没有准备好,如果测试用例写入到测试方法/代码将无法运行,在这种情况下,@Test(enabled = false)有助于禁用此测试案例. 测试方法是标注了@Test(enabled ...
- webapi 返回json及route设置
1.返回json 修改App_Start/webapiconfig public static void Register(HttpConfiguration config) { // Web API ...
- Perl的变量及语境(一)
Perl语言中的大部分语句表达式后都紧接一个分号,分隔不同的Perl语句. perl解释器能一次完成编译和运行这两个动作. perl通过一对反引号"``"来表示运行外部命令. 也可 ...
- 527D Clique Problem 判断一维线段没有两辆相交的最大线段数量
这题说的是给了n个位置 在x轴上 每个位置有一个权值为wi,然后将|xi - xj|>=wi+wj ,满足这个条件的点建一条边,计算着整张图中有多少多少个点构成的子图,使得这个子图的节点数尽量的 ...
- 《算法C语言实现》————快速-查找算法(quick-find algorithm)
算法基础是一个整型数组,当且仅当第p个元素和第q个元素相等时,p和q时连通的.初始时,数组中的第i个元素的值为i,0<=i<N,为实现p与q的合并操作,我们遍历数组,把所有名为p的元素值改 ...
- SpringMVC 拦截器实现原理和登录实现
SpringMVC 拦截器的原理图 springMVC拦截器的实现一般有两种方式 第一种方式是要定义的Interceptor类要实现了Spring的HandlerInterceptor 接口 第二种方 ...
- 20145316许心远《网络对抗》EXP7网络欺诈技术防范
20145316许心远<网络对抗>EXP7网络欺诈技术防范 实验后回答问题 通常在什么场景下容易受到DNS spoof攻击 公共共享网络里,同一网段可以ping通的网络非常容易被攻击 在日 ...