置顶

gitlab安装与PHP代码自动更新

作者:andy.zhang | 分类:未分类 | 浏览:120 | 日期:2022年07月21日

1,安装gitlab:

        注意:gitlab分社区版和企业版,本文以gitlab-ce(社区版)为标准

        下载:到gitlab官网下吧。这里不提供连接。

    1)准备好一台安装有linux系统的服务器。本文以虚拟机做服务器。

          分别定好gitlab的数据盘和安装路径(/var/opt/gitlab/git-data和/opt/gitlab)

            建议/opt/git随系统,安装在根分区下,/var/opt/gitlab/git-data可以等gitlab

            装完成后,再挂分区。

    2)yum install -y curl policycoreutils-python openssh-server perl

          安装支持包

    3)rpm -i gitlab-ce-15.1.2-ce.0.el7.x86_64.rpm

        安装gitlab-ce,注意一下路径,由于是事先下载并存放在指定目录上。

        等软件自动安装,完成后,用echo $?命令看有没有报错。如果没有,安装正确。

    4)初始化gitlab,生成数据保存路径。命令如下:

        gitlab-ctl reconfigure

        echo $?

        同样,用echo 检查看有没有报错。

    5)挂载gitlab代码保存磁盘。 编写/etc/fstab,令随系统启动生效。

        在这里,不详细说明。

    6)登录admin管理做页面上用户等配置。至此,基本完成

    7)PHP自动发布:

        准备工作:代码发布域名,代码运行域名(项目)

        首先,当然让开发把代码存放在gitlab上。然后,在项目下面选择设置。

gitlab安装与PHP代码自动更新 未分类 第1张


gitlab安装与PHP代码自动更新 未分类 第2张

如上图:网址是发布代码的域名;比如:pushcode.xx.com/webhook.php,这里是一个更新代码,

webhook.php这个文件要存放在发布代码域名下面。代码如下:

<?php 

//网站目录 

$www_file='/你的代码存放路径/'; 

//打开网站目录下的hooks.log文件,需要在服务器上创建,并给写权限,注意一下属主即可。

$fs = fopen('/data/wwwroot/hooks.log', 'a'); 

fwrite($fs, '================ Update Start ==============='.PHP_EOL.PHP_EOL); 

//自定义字串掩码 用于验证,Secret 令牌的内容。

$access_token = 'QhNO8YHqym5PHQQsexapF7041xOhzm62DRH'; 

//接受的ip数组,也就是允许哪些IP访问这个文件 这里是gitlab服务器IP

// $access_ip = array('192.168.1.15','14.xxx.xxx.19'); 

//如果使用www.xxx.com/xxx.php?token=xxxxxxx 的方式来传送验证字符串,则用这个方法获取 # 

$client_token = $_GET['token']; 

// 获取请求端的secret token 

$client_token = $_SERVER["HTTP_X_GITLAB_TOKEN"]; 

//获取请求端的IP 

$client_ip = $_SERVER['REMOTE_ADDR']; 

//把请求的IP和时间写进log 

fwrite($fs, 'Request on ['.date("Y-m-d H:i:s").'] from ['.$client_ip.']'.PHP_EOL); 

//验证token 有错就写进日志并退出 

if ($client_token !== $access_token) { 

echo "error 403"; 

fwrite($fs, "Invalid token [{$client_token}]".PHP_EOL); exit(0); 

//验证ip 验证同一网段。这里只在局域网部署,忽略了。

// if ( !in_array($client_ip, $access_ip)) { 

// echo "error 503"; 

// fwrite($fs, "Invalid ip [{$client_ip}]".PHP_EOL); 

// exit(0); 

//

//获取请求端发送来的信息,具体格式参见gitlab的文档 

$json = file_get_contents('php://input'); 

$data = json_decode($json, true); 

//如果有需要 可以打开下面,把传送过来的信息写进log # 

fwrite($fs, 'Data: '.print_r($data, true).PHP_EOL); 

//执行shell命令并把返回信息写进日志 注意一下运行用户。比如,我nginx用的是www。

$output=shell_exec("cd $www_file && git pull 2>&1"); 

fwrite($fs, 'Info:'. $output.PHP_EOL); 

fwrite($fs,PHP_EOL. '================ Update End ==============='.PHP_EOL.PHP_EOL); 

$fs and fclose($fs); 


?>


注意事项:1,需要先做一次git拉取代码的操作。例如如:sudo -u www git clone -b testing git@gitlab.xx.com:xxxxx/xxx.git

这些操作,如有不懂,百度解决。


点击”Add webhook“,如果没有报500错误码,应该正常,并在底下新增一个Project Hooks,这时,你提交并PUSH代码,就会自动更新到webhook.php里写的代码存放路径了。至此,gitlab自动更新PHP代码完成。



        





发表评论

取消
微信二维码
微信二维码
支付宝二维码
点击关闭
  • 在线客服1