使用webhook工具自动更新git代码

服务器环境:centOS7.5

默认服务器上已经安装好git环境

方案一:利用宝塔WebHook自动更新服务器代码

  1. 1.克隆代码到服务器

  2. git clone git@gitee.com:gai871013/xxxxxx.git
  3. 2.生成ssh公钥并添加到码云

    2.1 登陆服务器

    2.2 输入 ssh-keygen -t rsa -C "邮箱地址"   三次回车之后就可以生成密钥对

    2.3 输入cat ~/.ssh/id_rsa.pub 查看你的 public key(公钥),结果如下:

        image.png

    2.4 把途中从ssh-ras(包含)到最后面的邮箱地址(包含)复制一下。

    2.5 打开码云 -> 设置 -> SSH公钥,就出现了下面的画面,把我们刚才复制的内容贴到提示区,最后点击左下角的确定即可。

    /uploads/image/2018/10/31/e64be8bdb3bb21ed08d909aae1209aa4.png

    2.6 输入 ssh -T git@gitee.com,系统会提示你输入yes/no,输入yes,如果出现:You've successfully authenticated, but GitHub does not provide shell access.

3.配置用户名密码

        git config --global user.name "你的gitee账号"
        git config --global user.email "你在gitee的邮箱地址"

4.打开宝塔后台 软件管理->宝塔WebHook1.0->设置->添加

        image.png

    脚本如下

#!/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="git@gitee.com:用户名/$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

5.保存后打开‘查看密钥’

image.png

6.复制地址 http://面板/hook?access_key=123&param=aaa  将123替换成上面的密钥

7.打开码云 -> 具体的项目 -> 设置 -> WebHooks -> 添加 把上一步的地址填写到URL栏,提交保存

8.点击测试,服务器上查看效果,一切ok


方案二:项目内使用代码更新 

思路如下:

比如: https://www.wc87.com/git    php代码用php的exec执行git更新

码云WebHooks地址改为 http://www.wc87.com/git

理论上是可行的