宝塔 webhook 的使用
gogs    2018-11-26    181    0    0
senier   gogs

需要解决 传统的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

  1. yum install git

复制代码

2、宝塔面板 安装  宝塔  webhook 1.0

    3、通过webhook 添加 shell 命令

添加 shell 命令 (最好是随便添加一些字符后 在编辑的时候重新添加shell命令进去,在上图编辑框输入的命令会被过滤)

  1. #!/bin/bash

  2. echo ""

  3. #输出当前时间

  4. date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"

  5. echo "Start"

  6. #判断宝塔WebHook参数是否存在

  7. if [ ! -n "$1" ];

  8. then 

  9.           echo "param参数错误"

  10.           echo "End"

  11.           exit

  12. fi

  13. #git项目路径

  14. gitPath="/www/wwwroot/web/$1"

  15. #git 网址

  16. gitHttp="http://git.xxxxx.com/web/$1.git"


  17. echo "Web站点路径:$gitPath"


  18. #判断项目路径是否存在

  19. if [ -d "$gitPath" ]; then

  20.         cd $gitPath

  21.         #判断是否存在git目录

  22.         if [ ! -d ".git" ]; then

  23.                 echo "在该目录下克隆 git"

  24.                 git clone $gitHttp gittemp

  25.                 mv gittemp/.git .

  26.                 rm -rf gittemp

  27.         fi

  28.         #拉取最新的项目文件

  29.         git reset --hard origin/master

  30.         git pull

  31.         #设置目录权限

  32.         chown -R www:www $gitPath

  33.         echo "End"

  34.         exit

  35. else

  36.         echo "该项目路径不存在"

  37.         echo "End"

  38.         exit

  39. fi




编辑完成后  查看当前调用的网址:(希望 能直接生成调用网址  后面参数 param  为 shell 命令的变量 $1)

例如:http://bt.xxxxx.com/hook?access_ ... HJIdI6Dvl¶m=www

4、点击生成的网址测试 shell 命令 是否成功  注意当前shell 命令把目录作为了变量 param 传输   考虑多项目的情况
测试 日志查看

 5、配置 git web 钩子   如 gogs 的配置 如下

6、点击git 提交 和生成版本 执行情况  还有 宝塔 webhook 日志查看对应

完成

Pre: CentOS7下gogs安装总结

Next: ssh连接提示 "Connection closed by remote host"

181
Table of content