在gitlab 中使用webhook 实现php 自动部署git 代码

发布时间:2019-08-07 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了在gitlab 中使用webhook 实现php 自动部署git 代码脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

在技团队讨论中,我们决定从svn 迁移到 gIT ,于是使用了gitlab,代码自动部署使用了webhook

服务器

1.开启PHP需要的环境支持

服务器环境必须先安装git 环境,webhook 依赖php运行环境,同时需要使用shell_exec 和 exec 等函数。使用前先开启php部分可执行函数。

$ which php
/usr/local/php/bin/php

$ sudo vi /usr/local/php/etc/php.ini


;disable_functions = passthru,exec,System,chroot,chgrp,chown,shell_exec,PRoc_oPEn,proc_get_status,ini_alter,ini_reStore,dl,openLOG,syslog,readlink,syMLink,popepassthru,stream_socket_server,fsocket,popen

2.查看nginx 运行用户

因为gitlab 的 webhooks 的使用者都是web 服务器在用,我使用的是nginx ,所以必须的知道nginx和php-FPM所有者是谁

$ ps aux | grep php

$ ps aux | grep php-fpm

我的环境下是nginx

3.生成部署公钥

 sudo -Hu nginx ssh-@R_126_1084@ -t ras #一路回车下去就可以了

然后把公钥添加到gitlab 上去,不要问我怎么添加的,如果使用过github,就应该知道这个是怎么回事

4.首次从gitlab clone,指定目录需要为空

git clone git@git.xxxx.com:test/test.git  /data/www/git_test/

在网站根目录下放置webhook 自动部署文件webhook.php,然后gitlab 对应项目的webhook 配置使用该文件的网址

<?php
//git webhook 自动部署脚本
//项目存放物理路径
$path = "/data/www/git_test/test/";

$requestBody = file_get_contents("php://input");

if (empty($requestBody)) {
    die('send fail');
}
$content = json_decode($requestBody, true);

//若是主分支且提交数大于0
if ($content['ref']=='refs/heads/master' && $content['total_commits_count']>0) {

    $res = shell_exec("cd {$path} && git pull 2>&1");//以nginx用户运行
    
    $res_log = '-------------------------'.PHP_EOL;
    
    $res_log .= $content['user_name'] . ' 在' . date('Y-m-d H:i:s') . '向' . $content['repository']['name'] . '项目的' . $content['ref'] . '分支push了' . $content['total_commits_count'] . '个commit:' . PHP_EOL;
    $res_log .= $res.PHP_EOL;
    
    file_put_contents("git-webhook.txt", $res_log, FILE_APPEND);//追加写入
    
}

修改这个文件的所有者为 nginx

chown -R nginx:nginx webhook.php

参考文章
1.http://www.piaoyi.org/linux/G...
2.https://docs.gitlab.com/ce/us...
3.https://m.aoh.cc/149.html

脚本宝典总结

以上是脚本宝典为你收集整理的在gitlab 中使用webhook 实现php 自动部署git 代码全部内容,希望文章能够帮你解决在gitlab 中使用webhook 实现php 自动部署git 代码所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。