瞎折腾之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 ...
随机推荐
- Loadrunner之脚本的思考时间(固定/随机)设置、调试、保存、测试服务器监控等(六)
一.思考时间的设置 1)设置固定思考时间: Action(){ // … your code lr_think_time(3); //固定设置此处思考时间3s // … more of your co ...
- 纯css打造凹进与突出效果
1.凹进效果 background:#f2f2f2 center repeat; border-bottom: 1px solid #e9e9e9;border-top: 1px solid # ...
- 更新Newtonsoft.Json后报异常,未能加载文件或程序集“Newtonsoft.Json
未能加载文件或程序集“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个 ...
- auto类型-现代C++新特性
auto类型 C++11中引入的auto主要用于类型推导.auto在C++98中"存储类型指示符"的语义,由于使用极少且多余,该语义从C++11开始被删除. auto类型推导用于从 ...
- word使用
1:插入图片,显示不完整,需要>点击上方的段落,选择单倍行距 2:wps 可以直接右键选择保存文件中的图片 3:word中换行符的标识符为^p ,可以用来替换换行符. 4:使word中某一段背 ...
- C# 后台动态添加标签(span,div) 以及模板添加
很多时候.我们需要在后台用C#代码添加html标签.而不是在html源码中添加. 比如在html源码中简单的一个input 标签 <input type="type" nam ...
- 有意思的JSON.parse()、JSON.stringify()
前言 现在JSON格式在web开发中非常重要,特别是在使用ajax开发项目的过程中,经常需要将后端响应的JSON格式的字符串返回到前端,前端解析成JS对象值(JSON 对象),再对页面进行渲染. 在数 ...
- winfrom 下 listbox 选项添加value
public struct MyItem { public string Name; public string Tag; public override string ToString() { re ...
- JSP—cookie
cookie的作用: 1.对特定对象的追踪,如访问次数,最后访问时间,路径等 2.统计网页的浏览次数 3.在cookie有效期内,记录用户的登录信息 4.实现个性化,记录用户的喜好 5.保存的数据存在 ...
- meta 如何写
阻止手机号加下划线,可拨打:<meta name="format-detection" content="telephone=no" /> (io ...