第⼀步 测试服务器项⽬目录新建同步项⽬
1、在测试服务器上 nginx 项⽬目录下新建 deploy 目录,里面新建 deploysh
runtime web 三个目录,deploysh 放执行代码同步的脚本文件,runtime 放日志⽂件,web 放处理调用脚本文件的 php 文件。
2、web 目录下新建 index.php 文件,代码如下:
<?php
$target = isset($_GET['t']) ? $_GET['t'] : '';
$module = '';
switch($target){
case 'test':
$module = 'default';
break;
default:
$module = "madian-{$target}";
break;
}
if($target){
$shell = '/alidata/xxx/default/deploy/deploysh/develop.sh';
$shell = '/bin/bash'.$shell."$module";
$result = system($shell);
echo "===========execute:{$result}=";
}else{
echo "need query param t";
}
echo "deploy";
?>
3、deploysh ⽬录下新建 develop.sh 脚本文件,代码如下:
#!/bin/bash
ROOT_PATH=/alidata/xxxx/default/
WEB_PATH=${ROOT_PATH}$1
WEB_USER=www
WEB_USERGROUP=www
LOG_FILE=/tmp/git.default.log
echo "start deployment..."
echo "pulling source code..."
cd $WEB_PATH
echo `pwd`
#git reset --hard origin/develop
#git clean -f
git pull origin develop >> $LOG_FILE
git checkout develop >> $LOG_FILE
echo "changing permission"
chown -R $WEB_USER:$WEB_USERGROUP $WEB_PATH
echo "finished"
1、在 nginx 虚拟域名配置文件中(我的位置是:/alidata/xxx/server/nginx/conf/vhosts/default.conf),加入如下代码:
server{
listen 80;
server_name api-git-xxx.xxxx.com;
index index.php index.html
root /alidata/xxx/default/deploy/web;
access_log /alidata/xxx/default/deploy/runtime/nginx-access.log;
error_log /alidata/xxx/default/deploy/runtime/nginx-error.log;
location /{
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php{
include fastcgi_params;
#include fastcgi.conf;
limit_req zone=allips burst=10;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
try_files $uri=404;
}
location ~ /\.(ht|svn|git|){
deny all;
}
}
第三步 gitLab 上配置 Webhooks
1、点击项目,进入项⽬
2、右上角点选 edit project 进入编辑项目页⾯
4、在 URL 栏输⼊入 api-git-xxx.mamaqunaer.com?t=goods 保存添加就可以了, goods 是相应的项目名,原理参看上⾯面第一步
第四步 在测试服务器上 git clone 项目代码
1、在测试服务器与上面配置的相对应目录 终端执行 git clone git@192.168.1.248:zhaof/xxx-goods.git
2、上面的完成后,执行 git checkout -b origin develop 切换到 develop 分支进行同步。
到此,就完成了git 代码提交即自动同步到项目目录的功能
