宝塔 WebHook git自动拉取

服务器环境:CentOS 8.2.2004
项目目录: /www/wwwroot/www (www变量,自定义)
远程git版本库: 码云

步骤:

1. 准备工作

宝塔自带 git,没有的话可以自行安装

安装命令
yum install git

已安装的可以查看git版本
git --version

添加密钥到码云

ssh-keygen -t rsa
查看公钥 cat id_rsa.pub

把id_rsa.pub全部字符串复制添加到码云部署项目公钥设置里边

公钥管理

为了避免git pull 输入用户名密码,先把用户名密码加上

cd /www/wwwroot/ 下   //使用git克隆
git clone https://gitee.com/isu5cn/自己的项目名称.git  //码云里有克隆链接,避免出现错误,使用https方式

git config --global user.name "用户名"
git config --global user.email "邮箱"
git config --global credential.helper store

//会生成.gitconfig 的文件,查看
cat ~/.gitconfig  //显示内容

[user]
        name = 输入的用户名
        email = 输入的邮箱
[credential]
        helper = store
//第一次pull会提示输入用户名密码
[root@iZ25mi9h7ayZ test]# git pull
Username for 'https://gitee.com': xxxx@xxxx.com
Password for 'https://xxxx@xxxx.com@gitee.com':输入正确密码(看不到输入内容)
//生成.git-credentials 隐藏文件
cat ~/.git-credentials
https://Username:Password@gitee.com
 
vi ~/.git-credentials
可加多个用户名密码

2.宝塔面板 安装 宝塔 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="https://gitee.com/isu5cn/$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

编辑框输入的命令会被过滤,点击编辑重新添加shell命令进去保存,需要使用命令重启宝塔

/etc/init.d/bt restart
Stopping Bt-Tasks...    done
Stopping Bt-Panel...    done
Starting Bt-Panel....   done
Starting Bt-Tasks...    done

image.png

http://ip:端口/hooks?access_key=密钥&param=git项目名
网站项目名需跟码云的项目名保持一致
上述地址添加到码云
image.png

可同时推送多个服务器,已方便使用负载均衡

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容