我们假设你了解了gitlab的webhook的设置。熟悉宝塔面板并会安装宝塔webhook。
如果还没掌握,请自行去了解。
一、在宝塔面板中的软件中安装"宝塔WebHook"
二、根据需求修改以下的文件。
#!/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/$1"
#git 网址
gitHttp="http://git.hxsen.com/houxin/$1.git"
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
else
echo "该项目路径不存在"
echo "新建项目目录"
mkdir $gitPath
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
这里注意几个地方修改
1.gitPath的配置
gitPath就是你的网站的目录
比如,我的网站的运行目录/www/wwwroot/blog,这里填写/www/wwwroot/$1
其中。blog用$1代替,制作通用的git钩子。
2.gitHttp这里是你git项目的地址,就是使用git面板。拉取git文件的地址。
比如,我的git服务路径是http://git.hxsen.com/houxin/blog.git,
这里填写的是http://git.hxsen.com/houxin/$1.git,同样是为了做通用的设置。
在git钩子中,我把项目名以变量的形式传过来,就可以了。
如果你用了开放的git管理系统如,如gitee,你应该这么写
https://gitee.com/你的地址/$1.git
三、最后一步,就是获取gitlab需要你填写的url路径了。
打开宝塔webhook,找到自己添加的任务。点击"查看秘钥",就会出现以下信息
宝塔WebHook使用方法:
GET/POST:
http://110.28.36.47:8888/hook?access_key=CpQE4U6A3IxvkiedA58WBD8uDPNVlebNAMJe9toQjGdMTX7H¶m=aaa
@param access_key string HOOK密钥
@param param string 自定义参数(在hook脚本中使用$1接收)
注意,这里的面板,是你登录面板的地址。一般都不是80端口,请带端口号。
比如:
120.149.215.141:8888
或者简易版的去除参数。去除了自动创建目录的操作,测试正常运行
代码如下:
#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#git项目路径
gitPath="/www/wwwroot/shangyfy_test"
#git 网址
gitHttp="http://120.79.8.110:8090/web/test.git"
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
四、建议使用下面的更加的精简的版本,对于敏感的操作,建议我们自己做。让程序做简单重复的工作就行
#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#git项目路径
gitPath="/www/wwwroot/hxsen"
#git 网址
gitHttp="https://gitee.com/hx-self/hxsen.git"
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
sudo git pull
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi