之前听学长介绍过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的更多相关文章

  1. 瞎折腾之 NHibernate ORM框架的接触(MVC + Repository源码)(一)

    在这炮火连天.技术更新迅猛的年代,不接触了解.甚至会用2~3种框架都不好意思说自己有多少年工作经验.况且出去面试也会有点吹牛的底子嘛. 这次折腾了NHibernate.其实这些ORM框架封装好了都是给 ...

  2. Hexo瞎折腾系列(9) - 网页标题崩溃特效

    前言 本系列的所有修改均基于本系列第一篇中的新增文件(譬如custom.js),请先自行阅读Hexo瞎折腾系列(1) - 准备工作与简单美化:并按照文章所说自行修改代码或文件. 为网页添加标题崩溃特效 ...

  3. 刚接触Joomla,写一下瞎折腾的初感受~

    我这几天一直在苦苦寻找一款能够长期投靠的CMS产品,要求的是 1)必须支持命名空间 2)必须OOP + MVC分层 3)丰富分文档和使用群体,至少是出名的.免得哪一天他们解散了 4)-- 一開始我把目 ...

  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 运行环境: ...

  5. Deepin20 LNMP环境搭建(又一个瞎折腾的经历)

    背景 最近头脑发热,想安装个Linux系统来办工,所以安装了Deepin20的系统,折腾了一天的LNMP的环境,记录一下瞎折腾的过程. lnmp 是一个常见的web开发的环境 nginx 如果安装过可 ...

  6. 瞎折腾之 VS2013 Cordova项目的创建与配置

    扯淡 什么是Cordova ? 网上查询的说明: Cordova是贡献给Apache后的开源项目,是从PhoneGap中抽出的核心代码,是驱动PhoneGap的核心引擎.你可以把他想象成类似于Webk ...

  7. 瞎折腾之 Lucene.Net + MVC 搜索功能(上)

    前言 首先,关于Lucene.Net 的文章已经很多了.我这次决定写出来只是为了练练手,虽然在别人看来没什么用,但是自己确实是手动实践了一把.我个人觉得还是有意义的.爱折腾.敢于实践.才能有所收获,才 ...

  8. Hexo瞎折腾系列(8) - 添加评论系统

    前言 Hexo的NexT主题本身就集成了一些评论系统,多说啊之类的已经关闭服务的略过不提,目前比较多人用的有畅言.来必力livere.Gitment.Gitalk.Disqus等. 我刚用的评论系统的 ...

  9. Hexo瞎折腾系列(2) - 添加背景图片轮播

    动态背景图片插件jquery-backstretch jquery-backstretch是一款简单的jQuery插件,可以用来设置动态的背景图片,以下是官方网站的介绍. A simple jQuer ...

随机推荐

  1. 【剑指offer】 二叉树中和为某一值的路径

    一.题目: 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度 ...

  2. [目标检测]SSD原理

    1 SSD基础原理 1.1 SSD网络结构 SSD使用VGG-16-Atrous作为基础网络,其中黄色部分为在VGG-16基础网络上填加的特征提取层.SSD与yolo不同之处是除了在最终特征图上做目标 ...

  3. [py][mx]django邮箱注册的验证码部分-django-simple-captcha库使用

    邮箱注册-验证码 验证码使用第三方库django-simple-captcha 这个安装图形插件步骤官网有哦 - 1.Install django-simple-captcha via pip: pi ...

  4. 在 Angularjs 中 ui-sref 和 $state.go

    ui-sref 一般使用在 <a>...</a>: <a ui-sref="message-list">消息中心</a> $stat ...

  5. 001-Two Sum

    Given an array of integers, return indices of the two numbers such that they add up to a specific ta ...

  6. HDU 5059 Help him(简单模拟题)

    http://acm.hdu.edu.cn/showproblem.php?pid=5059 题目大意: 给定一个字符串,如果这个字符串是一个整数,并且这个整数在[a,b]的范围之内(包括a,b),那 ...

  7. jquery控制css的display属性(显示与隐藏)

    jquery控制div的显示与隐藏,很方便的. 例如: $("#id").show()表示display:block, $("#id").hide()表示dis ...

  8. Hive sql和Presto sql的一些对比

    最近由于工作上和生活上的一些事儿好久没来博客园了,但是写博客的习惯还是得坚持,新的一年需要更加努力,困知勉行,终身学习,每天都保持空杯心态.废话不说,写一些最近使用到的Presto SQL和Hive ...

  9. quartz-job实现定时任务配置

    使用quartz开源调度框架,写服务实现在一些指定场景发送特定短信,创建一个实现org.quartz.Job接口的java类.Job接口包含唯一的方法: public void execute(Job ...

  10. python 线程、多线程

    复习进程知识: python:主进程,至少有一个主线程 启动一个新的子进程:Process,pool 给每一个进程设定一下执行的任务:传一个函数+函数的参数 如果是进程池:map函数:传入一个任务函数 ...