gitlab钩子,push推送触发服务器自动更新pull

搬自自己的51cto博客,不想用51cto了

我用的linux的宝塔面板

代码是php

 

流程

1.创建秘钥

linux创建rsa密钥对(创建的是www用户的秘钥)

sudo -Hu www ssh-keygen -t rsa

运行之后会让你填具体路径,可以写/home/www/.ssh/id_rsa.pub

还会让你填密码短语,不用填,直接回车

还会再让你填密码短语,还不填,直接回车

 2.

配置gitlab
经过上一步的操作 /home/www/.ssh/目录会有一个id_rsa.pub文件,打开文件复制里面的内容

在gitlab中找到秘钥部署

填写上刚才复制的内容,标题随便填

 3.

在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);
}

    

4.

然后回到gitlab的web钩子选项
链接填写:123.123.123.123:6666/oapc

保存之后,当推送代码完毕后,gitlab就会访问此链接,触发上面网站的内容,运行git pull命令

注意!!!!!!!!!!!:需要将php的exec函数放行

 5.克隆代码

当前用户为www

sudo -uwww git config --global credential.helper store

使用www用户拉代码

sudo -uwww git clone git@110.249.169.183:mayuanye/app.git

如果因为权限问题,需要add . 和commit -m的话,记得同样使用sudo -uwww git.......来操作

posted @ 2024-07-10 10:39  西瓜霜  阅读(17)  评论(0编辑  收藏  举报