GitLab webhook部署以www用户,配置钩子请求超时时间

创建www家目录

mkdir /home/www

chown -R www:www /home/www

vim /etc/passwd

将www:x:1001:1001::/home/www:/sbin/nologin

改为www:x:1001:1001::/home/www:/bin/bash

su - www

mkdir .ssh

ssh-keygen -t rsa

将生成的密钥id_rsa.pub复制到gitlab

验证密钥:

git clone git@192.168.91.137:test/pipelinedemo.git

su - root

vim /etc/passwd

将www:x:1001:1001::/home/www:/bin/bash

改回为www:x:1001:1001::/home/www:/sbin/nologin

初始化本地git代码

mkdir /www/wwwroot/demo

chown -R www:www /www/wwwroot/demo

su -c "
cd /www/wwwroot/demo/
git clone git@192.168.91.137:test/pipelinedemo.git ./
" -s /bin/sh www

修改gitlab的webhook请求超时时间

vim /etc/gitlab/gitlab.rb

### Webhook Settings
###! Number of seconds to wait for HTTP response after sending webhook HTTP POST
###! request (default: 10)
gitlab_rails['webhook_timeout'] = 300

重新更新gitlab配置

gitlab-ctl reconfigure

添加webhook钩子

钩子的php代码bushu.php

<?php
/**
 * 使用gitlab webhook 自动部署网站
 */
//以流的方式读取传输过来的json
$body = file_get_contents("php://input");
if (empty($body)) {
    die('无输入');
}
//json转换为array
$data = json_decode($body, true);

//获取推送分支
//若是主分支且提交数大于0
if (isset($data['ref']) && $data['total_commits_count'] > 0){
    switch ($data['ref']) {
        case 'refs/heads/master':
            //网站根目录绝对路径(以/结尾)
            $dir = '/www/wwwroot/demo/';
            $branch = 'master';
            break;
        case 'refs/heads/dev':
            $dir = '/www/wwwroot/demodev';
            $branch = 'dev';
            break;
        default:
            die('无需更新');
    }
    //执行更新
    $output = shell_exec('cd ' . $dir . '; git fetch --all && git reset --hard origin/'.$branch.' && git config pull.rebase false && git pull 2>&1;');
}else{
    $output = '无需更新';
}

//输出执行结果
die($branch.'分支执行结果:' . $output);


版权声明:本文为qq_32421489原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。