创建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);