webhookit的简介和使用

webhook简介

Webhook,也就是人们常说的钩子,是一个很有用的工具。你可以通过定制 Webhook 来监测你在 Github(Gitlab,Coding等)上的各种事件,最常见的莫过于 push 事件。如果你设置了一个监测 push 事件的 Webhook,那么每当你的这个项目有了任何提交,这个 Webhook 都会被触发,这时 Github 就会发送一个 HTTP POST 请求到你配置好的地址。

如此一来,你就可以通过这种方式去自动完成一些重复性工作;比如,你可以用 Webhook 来自动触发一些持续集成(CI)工具的运作,比如 Travis CI;又或者是通过 Webhook 去部署你的线上服务器。

webhookit简介

在网上查找webhook用法的时候,资料杂而乱,完全不知道哪个可行。于是在GitHub上搜webhook,就发现了这个好东西。
摘取官方简介

一个极简的命令行版本的 git webhok,部署容易,非常简单就可以部署一个 webhook server。支持GitHub, GitLab, GitOsc, Gogs, Coding。Python 2 / 3 都支持。

安装介绍就不在重复讲,参考官方:https://github.com/hustcc/webhookit 。 这儿只讲一些遇到的一些问题和解决方法。

webhookit使用

注意事项

配置文件

# -*- coding: utf-8 -*-
'''
Created on Mar-03-17 15:14:34
@author: hustcc/webhookit
'''

# This means:
# When get a webhook request from `repo_name` on branch `branch_name`,
# will exec SCRIPT on servers config in the array.
WEBHOOKIT_CONFIGURE = {
    # repo_name填项目名,branch_name填分支名
    'repo_name/branch_name': [{
        # 如果执行的脚本在本地,下面参数可以为空。如果执行的脚本在另一台远程服务器,则需要填参数
        'HOST': '',  # 远程服务器host
        'PORT': '',  # 远程服务器端口
        'USER': '',  # 用户名
        'PWD': '',  # 密码
        # 脚本路径,必须为绝对路径
        'SCRIPT': '/home/hustcc/exec_hook_shell.sh'
    }, 
    ...],
# 可以配置多个脚本,格式和上面一样。一个示例:http://webhookit.hust.cc/
}

无法访问URL地址

如果安装了nginx最好用nginx转发ip地址,不然会出现访问不了url。nginx转发配置如下

    server {
        listen 80;
        server_name webhook.*****.com;  # *** 为自己的域名
        error_log /airm2m_data/airm2m/log/webhook.error;  #log保存位置

        location / {
            proxy_pass http://127.0.0.1:18340;  #转发本地IP
        }
    }

python3使用问题

尽管官方描述支持python3,但是在使用过程还是出现了问题,修改支持python3的代码见下:https://github.com/lenghonglin/webhookit/commit/f6e034bbad6a789df94b0e649137437eb2e86512

脚本执行但未生效

这个问题是纠结最久的问题,网上也有人遇到见过,摘取一下问题

情况如下: 我在ubuntu server 14.04 上面安装了gitlab,来托管项目代码。然后想通过gitlab的web hook
功能来做测试服务器代码自动化更新代码功能。现在遇到一个问题:就是我客户端在master分支上面push代码的时候,我测试服务器的代码目录并没有自动更新。我的shell脚本如下:

!/bin/bash echo ‘haha:::==’ >> /tmp/wtz.log

cd /srv/www/bfar-ng

echo ‘my name is gitlab’>> /tmp/wtz.log

git checkout master

git pull origin master >> /srv/www/deploy/info.log git pull origin
master

echo ‘you are so cute!!!::’>> /tmp/wtz.log

查看wtz.log 后发现echo ‘my name is gitlab’>> /tmp/wtz.log 和echo ‘you are so
cute!!!::’>> /tmp/wtz.log 都成功写入到日志文件中。但测试服务器项目原代码就是没有自动更新。除非手动git pull
origin master 或者 在终端里面直接执行 上面的shll。它才会更新。 ps:项目目录我都设置777权限了。

求教为啥无法执行git命令。

看了下回答,大致是权限问题,这就牵扯如何在shell里面使用sudo的问题了。也不卖关子,直接上答案

echo "123456lhl"|sudo -S git pull

123456lhl是用户名密码,-S后面为需要执行的命令。
以上就是在使用webhookit遇到的问题以及解决方法,后续会继续更新。

源码分析

这个坑先留着,有时间在写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值