相关知识 -- git挂钩
原文链接 -- 宝塔 webhook 的使用
在这里 非常感谢 宝塔团队 集成 git 和 webhook
最近还添加了 gitlab 虽然我现在用的是 gogs
上周公司从svn 转用git管理 同时需要解决 传统的FTP上传文件多人合作代码整合问题
这个问题之前在网络上也找到一些方式 只是一直没有使用,但是用了宝塔面板后 这些配置变得非常简单
在这里整理一下最近 通过宝塔面板 整合 git + webhook 代码同步问题
当前环境:
1、公司项目代码使用gogs (gogs.io) 管理
2、公司测试服务器 centos 7 (宝塔 5.0)
3、公司阿里云服务器 centos 7 (宝塔 5.0)
需求:
1、公司项目开发环境 统一在测试服务器 测试 主要是 web 项目
2、公司git 提交的代码 测试服务器自动更新
3、通过 gogs 发布的版本 自动更新到 阿里云服务器
原理:
通过 git 的 webhook (git web 钩子) 触发 push 事件 ,用户提交代码后( git push ) 测试服务器 直接拉取当前git最新代码 (git pull)
当用户通过 gogs 发布版本 (git archive) 触发 webhook 阿里云服务器自动拉取最新的代码(git pull)
实施:
1、centos 服务器 安装 git
yum install git
2、宝塔面板 安装 宝塔 webhook 1.0
3、通过webhook 添加 shell 命令
添加 shell 命令 (最好是随便添加一些字符后 在编辑的时候重新添加shell命令进去,在上图编辑框输入的命令会被过滤)
#!/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
编辑完成后 查看当前调用的网址:(希望 能直接生成调用网址 后面参数 param 为 shell 命令的变量 $1)
例如:http://bt.xxxxx.com/hook?access_ ... HJIdI6Dvl¶m=www
4、点击生成的网址测试 shell 命令 是否成功 注意当前shell 命令把目录作为了变量 param 传输 考虑多项目的情况
测试 日志查看
5、配置 git web 钩子 如 gogs 的配置 如下
6、点击git 提交 和生成版本 执行情况 还有 宝塔 webhook 日志查看对应
完成
原文链接 -- 宝塔 webhook 的使用