热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

webhook自定义服务器,使用python做一个webhook服务器

通常,可以使用gitlab给自己搭建一个代码托管平台,或者使用github等流行的代码管理平台维护自己的代码,当需要在服务器上部署项目的时

通常,可以使用gitlab给自己搭建一个代码托管平台,或者使用github等流行的代码管理平台维护自己的代码,当需要在服务器上部署项目的时候,一个简单的做法就是在服务器上使用 git clone

或者

git pull

命令拉取最新的代码并进行部署。可能只有两行的命令,但每次更新都需要手动操作依然很麻烦。

今天介绍一个小工具,可以更高效便捷地完成自动拉取代码并部署的功能。 不是jenkins,而是使用python自己编写一个小的webhook服务。

前提是你的机器具有公网IP地址,或者是可以从代码托管平台访问到的某个机器(内网环境)。

首先,确保机器上已经安装有python并已经安装了pip。

执行 pip install glhooks

glhooks是小巧精悍的一个库,经过简单的配置就可以完成webhook的功能。下面我们来看一下如何配置config.ini文件。 [server]

host=gitlab.example.com

log_file=/home/myname/Downloads/webhookfile.log

; email=myname@example.com

[mailer]

user=my.name@example.com

password=123123

host=smtp.example.com

security=plain

sender=Gitlab Webhook

; list of repositories

[http://gitlab.example.com/myname/AwesomeProject]

path=/home/myname/webhook/Awesomeproject/

branch=master

[http://gitlab.example.com/myname/YetAnotherAP]

path=/home/myname/webhook/YetAnotherAP/

branch=master

上面的配置当中,修改host为自己的代码托管平台网址,并修改自己对应的项目repository网址,本地path为运行该webhook 服务的机器上的路径,可以自行指定。

启动命令是 python -m glhooks /home/myname/webhook/config.ini

指定配置文件为上述的config.ini文件。默认会启用该server的8000端口。

现在已经可以使用这个工具来自动pull代码了。

如果在自动pull代码之后还有别的操作,比如将代码复制到指定路径当中进行编译等操作,可以通过手动修改glhooks的库文件的方式实现。具体方法如下: class GitlabWebhookHandler(BaseHTTPRequestHandler):

RESPONSE_MESSAGE = "Python GitLab webhook handler"

@property

def context(self):

return self.server.context

def do_POST(self):

data_size = int(self.headers["Content-Length"])

data = self.rfile.read(data_size)

json_data = json.loads(data.decode("utf-8"))

try:

self.handle_commits_data(json_data)

except Exception as e:

self.context.logger.exception("Error during parsing of data", json_data)

# self._send_email(json_data, e)

self._send_response_message(self.RESPONSE_MESSAGE, status_code=500)

else:

self._send_response_message(self.RESPONSE_MESSAGE)

os.system(r"""YOUR BASH COMMAND HERE""")

默认的,glhooks的文件会被放在 /usr/local/lib/python2.7/dist-packages/glhooks/

路径当中,按照上文的样子修改server.py文件的Handler函数,在该函数的最后一行加上os.system()调用即可。



推荐阅读
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • 三小时掌握计算机网络基础(通俗易懂)
    目录1.网络层次划分2.OSI七层网络模型3.IP地址4.子网掩码及网络划分5.ARPRARP协议6.路由选择协议7.TCPIP协议8.UDP协议 9.DNS协议 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 计算机网络计算机网络分层结构
    为了解决计算机网络复杂的问题,提出了计算机网络分层结构。计算机网络分层结构主要有OSI7层参考模型,TCPIP4层参考模型两种。为什么要分层不同产商 ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
  • OSI七层模型、TCP/IP五层模型
    OSI网络互连的七层框架:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;应用层OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,为用户直接提供各种网 ... [详细]
  • 分享西西弗斯自动求职系统【PHP】
    后端开发|php教程后端开发-php教程做这个系统的背景是前段时间帮女朋友找工作,大家也许都有过这样的感受,发出一份份简历都石沉大海,为什么呢?经过测试,我发现是因为邮件的阅读率并 ... [详细]
  • 2016年8月29日当初想的太简单~~~哎写在前面从3月份开始各大互联网类、游戏类、软件类等公司开始招暑期实习,9月份正式招聘,面临众多的工作选择和技术方向,我们不免有些眼花缭乱啊 ... [详细]
  • 适合小型网络环境的免费网络管理软件Intermapper
    InterMapper网络管理软件可支持监测5台以内的网络设备,特别适合安装使用在小型网络环境,可以实时了解网络运行状态和网络拓扑,支持多 ... [详细]
  • 软测管理工具实践04
    一.今日任务——安装完成QC9.0进过几天的安装,终于把QC9.0成功的安装在了自己win7系统的电脑上。其中遇到的困难很多,首先是QC的版本问题&#x ... [详细]
author-avatar
飞飞飞070801
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有