服务器环境:centOS7.5
默认服务器上已经安装好git环境
方案一:利用宝塔WebHook自动更新服务器代码
1.克隆代码到服务器
2.生成ssh公钥并添加到码云
2.1 登陆服务器
2.2 输入 ssh-keygen -t rsa -C "邮箱地址" 三次回车之后就可以生成密钥对
2.3 输入cat ~/.ssh/id_rsa.pub 查看你的 public key(公钥),结果如下:
2.4 把途中从ssh-ras(包含)到最后面的邮箱地址(包含)复制一下。
2.5 打开码云 -> 设置 -> SSH公钥,就出现了下面的画面,把我们刚才复制的内容贴到提示区,最后点击左下角的确定即可。
2.6 输入 ssh -T git@gitee.com,系统会提示你输入yes/no,输入yes,如果出现:You've successfully authenticated, but GitHub does not provide shell access.
git clone git@gitee.com:gai871013/xxxxxx.git
3.配置用户名密码
git config --global user.name "你的gitee账号"
git config --global user.email "你在gitee的邮箱地址"
4.打开宝塔后台 软件管理->宝塔WebHook1.0->设置->添加
脚本如下
#!/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.保存后打开‘查看密钥’
6.复制地址 http://面板/hook?access_key=123¶m=aaa 将123替换成上面的密钥
7.打开码云 -> 具体的项目 -> 设置 -> WebHooks -> 添加 把上一步的地址填写到URL栏,提交保存
8.点击测试,服务器上查看效果,一切ok
方案二:项目内使用代码更新
思路如下:
比如: https://www.wc87.com/git php代码用php的exec执行git更新
码云WebHooks地址改为 http://www.wc87.com/git
理论上是可行的