前言:安装了宝塔系统,gitea和webhook都是通过宝塔的插件安装的。
1、准备工具
1.1gitea安装
宝塔软件商店搜索,一键安装。
需要准备一个数据库,访问的时候需要带上端口号,具体的细节可以去自行搜索,不是很难。
备注:做了反向代理(包括端口号)后,克隆地址带有端口号,修改gitea的一个配置文件(config/app.ini中的ROOT_URL,好像是这个参数,配置的有些久了,忘了)中的地址生成参数。
1.2webhook安装
宝塔软件商店搜索,一键安装。
备注:我安装的是webhook2.4,添加密钥后会有一串乱码,实际上是¶,m是正常显示的。
2、自动同步
$1:param带过去的参数。经测试,用WWW.XXX.COM来当$1参数,会出错。可以考虑克隆的时候,用别名来创建项目文件夹。
#!/bin/bash
#私有库载入私钥
sudo ssh-agent bash
sudo ssh-add ~/.ssh/id_rsa
sudo ssh-add -l |cat
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="/你的路径/$1"
#git 网址两种方式都可以ssh 或者https
gitHttp="https://gitea路径/$1.git"
echo "Web站点路径:$gitPath,git地址:$gitHttp"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
cd $gitPath
#判断是否存在git目录
if [ ! -d ".git" ]; then
echo "在该目录下克隆 git"
sudo git clone $gitHttp gittemp
sudo mv gittemp/.git .
sudo mv gittemp/* .
sudo rm -rf gittemp
fi
echo "拉取最新的项目文件"
#sudo git reset --hard origin/master
#sudo git pull
sudo -u root 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 mv gittemp/* .
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
3、配置gitea里面的账号公钥
cd ~/.ssh
打开id_rsa.pub,复制里面的内容,添加到你的gitea账号配置里面去。
4、测试
gitea,项目=》设置=》web钩子=》添加钩子
填写webhook添加密钥后的地址,密钥,然后最下方有个“测试推送”。
ide克隆了gitea项目,然后随意修改一下,上传并推送,也可以测试成功与否。
5、错误排查
5.1、密钥长度不够
ssh-keygen 命令,-b用于指定生成的密钥长度
5.2、同步代码排错
进入服务器,然后把同步代码一步一步的执行下来,根据错误信息排错。
5.3、git pull时提示的安全性问题
发现同步不了,但是第一次git clone是成功的,于是一步一步操作下来,服务器错误提示:safe.目录。临时解决方案就是:按照shell上显示的解决方案,运行一下。网上说是文件拥有者的问题。有知道怎么解决的,可以分享一下。