首页 > 其他分享 >gitlab钩子,push推送触发服务器自动更新pull

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

时间:2024-07-10 10:42:03浏览次数:14  
标签:pull www git log gitlab 自动更新 path php

搬自自己的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 [email protected]:mayuanye/app.git

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

标签:pull,www,git,log,gitlab,自动更新,path,php
From: https://www.cnblogs.com/zonglonglong/p/18293442

相关文章

  • jenkins拉取远程仓库的代码如gitlab
    jenkins结合远程仓库既然是持续集成,对代码进行构建,我们得获取代码仓库的内容,这里选择我们搭建的gitlab服务器开发工程师的机器1.在window上生成ssh-key$ssh-keygen2.添加到代码仓库github/gitlab都玩一玩,公司用这俩居多gitlab上添加该机器的ssh-key允许上传代码,咱这......
  • Tool-Gitlab-重置数据库,修复server迁移token异常
    Tool-Gitlab-重置数据库,修复server迁移token异常迁移gitlab的server数据之后,导致token异常影响:修改工程配置信息,提交时页面报错502sudogitlab-railsdbconsole--databasemainDELETEFROMci_group_variables;DELETEFROMci_variables;UPDATEprojectsSETrunners_token......
  • gitlab私有仓库搭建
    安全:关闭防火墙,selinux1.安装GItlab所需的依赖包yuminstallcurlpolicycoreutils-pythonopenssh-serverpostfixwget-y安装gitlab获取gitlab源码包选择各种yum源去安装https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.3-ce.0.el7.x86_64.rpm......
  • 如何完美解决 “error pulling image configuration: download failed after attempts
    如何完美解决"errorpullingimageconfiguration:downloadfailedafterattempts=6:dialtcp59.188.250.54"......
  • 如何第一次从零上传项目到GitLab
    嗨,我是兰若,今天想给大家说下,如何上传一个完整的项目到与LDAP集成的GitLab,也就是说这个项目之前是不在git上面的,这是第一次上传,这样上传上去之后,其他小伙伴就可以根据你这个项目的git地址,把代码克隆下载到自己的本地,这样有助于项目共享,也方便所有参与项目的小伙伴可以同步更新或......
  • 极狐GitLab 将亮相2024空天信息大会暨数字地球生态峰会,携手中科星图赋能空天行业开发
    GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab:https://gitlab.cn/install?channel=content&utm_source=csdn是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。极狐GitLab在5月28......
  • 极狐GitLab 17.1 重磅发布,100+ DevSecOps功能更新来啦~【十二】
    GitLab是一个全球知名的一体化DevOps平台,很多人都通过私有化部署GitLab来进行源代码托管。极狐GitLab:https://gitlab.cn/install?channel=content&utm_source=csdn是GitLab在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。极狐GitLab在5月28......
  • idea删除分支并同步到gitLab以及gitLab上的分支删除
    目录idea删除分支并同步到gitLab方法一(推荐) 方法二(命令行)gitLab上的分支删除前言-与正文无关​   生活远不止眼前的苦劳与奔波,它还充满了无数值得我们去体验和珍惜的美好事物。在这个快节奏的世界中,我们往往容易陷入工作的漩涡,忘记了停下脚步,感受周围的世界。让......
  • git、github、gitee、gitlab的区别
    概述:git是一种版本控制系统,是一个命令,是一种工具。github是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱。gitlab类似github,一般用于在企业内搭建git私服,要自己搭环境。gitee即码云,是oschina免费给企业用的,不用自己搭建环境。git-ce是社区版,gitlab-......
  • In what kind of situations that no pull would be configured as a input gpio
    InthecontextofGPIOconfiguration,thechoicebetweenusingapull-up,pull-down,ornopullresistordependsonthespecificrequirementsoftheapplicationandtheexternalcircuitryconnectedtotheGPIOpin.NoPullConfigurationWhenGPIO_InitStru......