gitlab与github大致的功能类似,使用github创建的库必须是公有库,对于一些隐私文件就很难办了,所以 可以使用gitlab搭建一个属于自己的私有的github;


本文主要是讲如何利用gitlab提供的web-hooks,实现自动更新版本库到远程仓库中;


1. 首先需要在远程的git仓库服务器安装lamp或者lnmp环境(这里就直接使用yum安装lamp了);

yum install -y  httpd mysql mysql-libs php php-mysql mysql-server php-bcmath php-gd php-mbstring

2. 编写一个用户触发的脚本

cat /var/www/html/update.php
<?php
//git仓库目录
$www_folder = "/home/apache/baby";
//执行指令
echo shell_exec(" cd $www_folder && git pull 2>&1");
?>

3. 把update.php放在apache的web目录下,使它能被用浏览器访问到;

 因为执行update.php脚本需要使用apache的启动用户的权限,所以下面的操作使用的都是apache用户;

4.创建密钥(登陆apache用户)

 apache用户国为是yum安装httpd时自动创建的,所以默认是没有登陆权限和家目录的,需要改成如下:

grep 'apache'  /etc/passwd     

apache:x:48:48:Apache:/home/apache:/bin/bash
#修改好后,登陆apache
su apache
#创建密密钥
ssh-keygen -t rsa -C "admin@admin.com"
#把apache用户目录下的.ssh/id_rsa.pub 内容复制到gitlab用户中的 SSH Keys,

把apache用户目录下的.ssh/id_rsa.pub内容复制到gitlab用户中的SSH Keys,

5. 克隆用户的版本库到本地

git clone git@gitlab.com:username/baby
#gitlab.com :gitlab的域名(访问链接)
#username  : 用户名
#baby : gitlab的仓库名

6. 测试

现在可以使用其它的用户提交一个合并请求,然后master用户接受合并请

再登陆到apache服务器看有没有自动同步;


这个方式是只有合并其它分支到master主分支时才会被触发;