团队协作离不开git仓库,今天来给大家介绍一下配置宝塔上面的web hooks ,实现将本地代码提交到码云仓库后自己 更新到云服务器
一、在宝塔面板中的软件中安装”宝塔WebHook”,没有安装的直接点安装就行
二、生成公钥(私有仓库一定要配置)
直接根据提示,回车下一步就行
1 | ssh-keygen -t rsa |
三,查看公钥,并复制到码云gitee仓库
1 | cat /root/.ssh/id_rsa.pub |
四、创建webhooks脚本
名称随便起就行
执行脚本可以参考以下,注意$1 git 仓库最好和文件夹一致,如果不一致,可以根据自己的情况改一下下面的代码
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #!/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 网址两种方式都可以ssh 或者https gitHttp="https://gitee.com/xxx/$1.git" #gitHttp="git@gitee.com:xxx/$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 |
点击查看秘钥,复制脚本地址和秘钥
然后到码云配置webhook
选择事件根据自己的情况选择即可
创建完后,我们可以看到他默认请求了一次,也可以自己进行测试,直接点后面的测试即可,然后点击下面的查看更多,可以查看更多的详细信息
然后我们回到宝塔刷新查看webhook 日志,可以看到已经调用了两次了
注意事项
如果webhook执行了,查看推送过来的代码并没有创建成功,很有可能是权限的问题
我们尝试手动拉取一次,提示gitee.com 不可信,这下找到原因了,直接根据提示输入yes 即可,后面的就可以实时的推送过来了
1 2 3 4 | The authenticity of host 'gitee.com (212.64.62.183)' can't be established. ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc. ECDSA key fingerprint is MD5:27:e5:d3:f7:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1. Are you sure you want to continue connecting (yes/no)? |