用的是linux的宝塔
生成www用户的秘钥
sudo -Hu www ssh-keygen -t rsa
公钥配置到gitlab
cat /home/www/.ssh/id_rsa.pub
当前用户为www
sudo -uwww git config --global credential.helper store:
使用www用户拉代码
sudo -uwww git clone git@110.249.169.183:mayuanye/app.git
- linux创建rsa密钥对(创建的是www用户的秘钥)
sudo -Hu www ssh-keygen -t rsa
运行之后会让你填具体路径,可以写/home/www/.ssh/id_rsa.pub
还会让你填密码短语,不用填,直接回车
还会再让你填密码短语,还不填,直接回车
- 配置gitlab
经过上一步的操作 /home/www/.ssh/目录会有一个id_rsa.pub文件,打开文件复制里面的内容
在gitlab中找到秘钥部署
填写上刚才复制的内容,标题随便填
- 在linux中新建一个网站,网站中写一个api.php,php文件可以随便写,写成index.php也行
比如网站的地址是123.123.123.123:6666
php文件内容如下,也可以适当做修改
<?php
if (!isset($_REQUEST['s'])) {
exit('error');
}
$s = $_REQUEST['s'];
$config = [
// 这里写需要git pull的项目的根目录
'/oapc' => '/www/wwwroot/xxx/oa',
//
];
if (!isset($config[$s])) {
exit('error');
}
$path = $config[$s];
$comand = "cd {$path} && git pull";
$res = exec($comand);
$log = [
'time' => date('Y-m-d H:i:s'),
'pathth' => $path,
'result' => $res,
];
// 记录日志
write_log($s,json_encode($log));
exit('OK');
function write_log($path,$msg)
{
$file = date('Ymd').'.log';
file_put_contents("logs/{$file}",$msg.PHP_EOL,FILE_APPEND);
}
- 然后回到gitlab的web钩子选项
链接填写:123.123.123.123:6666/oapc
保存之后,当推送代码完毕后,gitlab就会访问此链接,触发上面网站的内容,运行git pull命令
注意!!!!!!!!!!!:需要将php的exec函数放行