Gitlab自动触发webhook

原理介绍

1、配置gitlab当push动作的时候,访问服务器上的一个链接比如xxx.example.com/boot.php
2、boot.php里面写着一行代码,会让服务器git pull相应项目的代码到web目录。
3、pull结束,代码就在web目录了,我们只要重新访问网站就可以了。

前提要求:

需要搭建好Nginx、PHP、Gitlab服务

1、配置服务端

先在服务端生成一对你的SSH密钥,因为之后服务器要用ssh方式免账号密码从gitlab上pull代码。用ssh-keygen在服务器上生成密钥,或者你已经有密钥了就跳过这一步。

ssh-keygen

有了密钥之后,复制你的公钥,在你的gitlab profile个人资料里,找到SSH的目录,粘贴保存进去就可以了。这样gitlab上就有了你web服务器的公钥了,就可以正常SSH了

cat /root/.ssh/id_rsa.pub

Gitlab自动触发webhook_第1张图片
接着在服务端的相应目录下clone gitlab上的项目。这样就可以将这个文件夹对应到gitlab上的项目。后续的脚本就要根据这个对应关系来用脚本驱动这个git pull。
比如我在/var/www/的目录下git clone了gitlab上的项目,得到了/www/html/目录,然后将自己的web服务器nginx解析到/www/html/主目录(修改完配置文件之后,记得reload,不然不会生效的)。

2、服务端脚本

首先是token验证,访问的时候要有特定的token,我们才可以让这个访问生效,一般这个token可以在gitlab填,这样gitlab访问这个脚本的时候就会带上这个token就能识别出来了。有token还不够,被人知道了咋办,我们还要限制IP访问,只有gitlab服务器的ip我们才可以允许执行。修正完就成了下面这个样子。

你可能感兴趣的:(gitlab)