宝塔利用git+ webhooks 实现git更新远程同步Linux服务器

宝塔利用git+ webhooks 实现git更新远程同步Linux服务器

目的:项目push到gitee上后,自动pull到服务器,实现本地和服务器同步
借鉴宝塔论坛的方法:https://www.bt.cn/bbs/thread-5348-1-1.html
参考文档:https://rudon.blog.csdn.net/article/details/106068376?utm_medium=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-searchFromBaidu-1.control

服务器环境:华为云centos7.6
项目目录: /www/wwwroot/test(test变量,自定义)
远程git版本库: 码云
步骤:

  1. 准备工作
    宝塔自带 git,没有的话可以自行安装
    yum install git
    已安装的可以查看git版本
    git --version
    git version 1.8.3.1
    添加密钥到码云
    ssh-keygen -t rsa

//查看公钥

把ssh-rsa全部字符串添加到码云中个人中心的SSH公钥中,切记不要部署到项目公钥中,项目公钥有只读权限,服务器拉码云代码时候没法读取

放好公钥以后则要测试,是否成功
ssh -T [email protected]

为了避免git pull 输入用户名密码,先把用户名密码加上
cd /www/wwwroot/test下 //使用git克隆
git clone https://gitee.com/dong_de123/自己的项目名称.git //码云里有克隆链接,避免出现错误,使用https方式

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

//会生成.gitconfig 的文件,查看
cat .gitconfig //报错cat: .gitconfig : No such file or directory
cat ~/.gitconfig //显示内容

[user]
name = 输入的用户名
email = 输入的邮箱
[credential]
helper = store

git pull 前添加 git remote add origin ‘项目链接’
//第一次pull会提示输入用户名密码
[root@iZ25mi9h7ayZ test]# git pull
Username for ‘https://gitee.com’: [email protected]
Password for ‘https://[email protected]@gitee.com’:输入正确密码(看不到输入内容)
//生成.git-credentials 隐藏文件
cat ~/.git-credentials
https://Username:[email protected]

vi ~/.git-credentials
https://码云账号:码云密码@gitee.com

可加多个用户名密码
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项目路径
#web那层是我后加的正常没web
gitPath="/www/wwwroot/test"
#git 网址 你的码云网址 1 是 系 统 接 收 变 量 就 是 在 w e b h o o k 填 你 的 项 目 名 时 传 来 的 g i t H t t p = " h t t p s : / / g i t e e . c o m / d o n g d e 123 / t e s t . g i t " e c h o " W e b 站 点 路 径 : 1是系统接收变量 就是在webhook填你的项目名时传来的 gitHttp="https://gitee.com/dong_de123/test.git" echo "Web站点路径: 1webhookgitHttp="https://gitee.com/dongde123/test.git"echo"WebgitPath"
#判断项目路径是否存在
if [ -d “$gitPath” ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d “.git” ]; then
echo “在该目录下克隆 git”
sudo git init
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
编辑框输入的命令会被过滤,点击编辑重新添加shell命令进去保存,需要使用命令重启宝塔
/etc/init.d/bt restart

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

你可能感兴趣的:(git,linux,ssh,centos)