0
点赞
收藏
分享

微信扫一扫

gitlab钩子服务器自动拉取更新的流程

非凡兔 2023-12-22 阅读 48

用的是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


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

sudo -Hu www ssh-keygen -t rsa

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

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

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

gitlab钩子服务器自动拉取更新的流程_钩子

  1. 配置gitlab

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

在gitlab中找到秘钥部署

gitlab钩子服务器自动拉取更新的流程_linux_02

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

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

    


  1. 然后回到gitlab的web钩子选项

链接填写:123.123.123.123:6666/oapc

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

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

gitlab钩子服务器自动拉取更新的流程_钩子_03

举报

相关推荐

0 条评论