WebHook自动拉取服务器代码

张天宇 on 2019-10-29

这篇主要记录了如何通过WebHook,实现git自动拉取服务器代码。

博客存放的位置改了好几次,后来稳定下来放在了GitHub上,但是最近Github访问速度慢了不是一点,于是捡起了好久不用的服务器(心疼之前闲置时候的人民币T。T)。

本篇主要备份步骤,以备不时之需。

放到服务器上就有些问题,老是需要自己去pull,非常麻烦。为了博客,也是方便以后工程的部署和版本管理更加方便,使用WebHook的自动拉取,每次push完不需要登陆服务器pull了,很方便。

一、WebHook

Webhooks 是代码托管平台提供的一个功能,对于任意一个项目,可以设置一个 URL,同时选择一些事件,当触发了这些事件时,代码托管平台会自动请求该 URL,并带上一些必要的参数。简单点说,Webhooks 就是一个项目的钩子函数,当你执行一些事件时,会自动调用这个钩子函数,事件就是 push、pull request、fork 等等这些操作。

二、安装GitHub并克隆

在服务器上安装GitHub并配置公钥,这里不再赘述。

将项目克隆到本地。

三、 钩子

我的服务器采用了宝塔Linux面板管理,它集成了很多开发环境,这里使用宝塔配置WebHook。

1. 安装WebHook并添加记录

在宝塔面板中安装WebHook,并添加一条记录。

记录

下方脚本输入,注意修改路径:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
echo "param参数错误"
echo "End"
exit
fi
#git项目路径
gitPath="/www/wwwroot/web/$1"
#git 网址
gitHttp="http://git.xxxxx.com/web/$1.git"

echo "Web站点路径:$gitPath"

#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
git clone $gitHttp gittemp
mv gittemp/.git .
rm -rf gittemp
fi
#拉取最新的项目文件
git reset --hard origin/master
git pull
#设置目录权限
chown -R www:www $gitPath
echo "End"
exit
else
echo "该项目路径不存在"
echo "End"
exit
fi

2. 查看记录获取回调网址

回调

按照指示拼装一波即可。

3. 填写回调地址

去GitHub项目的设置中,新建一个WebHook填写回调地址。

随便改动一丢丢,push一下看看效果。