gitlab webhook 同步远程服务器

$ sudo mkdir /home/www
$ sudo -u www ssh-keygen -t rsa
...
$ cat /home/www/.ssh/id_rsa.pub

开始使用

​ 服务器环境必须先安装 git 环境,Webhook 脚本依赖 PHP 运行环境,同时需要有 exec 函数执行权限。使用前需要先开启禁用的 PHP 部分可执行函数,参考以下设置

disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,popen

#删除禁用的函数的 exec   保存并重启php-fpm
cd /home/wwwroot
git clone http://gitlab.xxx.com/project
cd project
pwd #获取项目目录 假设为 /home/wwwroot/project
git clone https://github.com/bravist/gitlab-webhook-php # 获取脚本
#克隆完成后,需要将项目中带有 {server} {project} 字样的内容替换为自己的服务器 IP 与服务器目录
#简而言之 根据自己的服务器项目的目录自行配置响应的路径

配置 Gitlab 项目 Webhooks
进入你的gitlab控制台 -> 选择项目 -> 设置 -> Webhooks设置,新加Webhooks

类似的URL与Token:

URL:http://server/gitlab-webhook-php/gitlab.php?token=MmNmMGRmMGI2Y2EyYjY3NzFjMzRjODkzZTQ3NjY5M2Y= TOKEN:MmNmMGRmMGI2Y2EyYjY3NzFjMzRjODkzZTQ3NjY5M2Y=
在webhook 处点击测试
若 webhook.log 有文本写入这是请求成功
会出现一些问题

hook 文件请求成功但是 文件没有修改。需要注意你的项目目录 和你的 php-fpm 是不是同一用户
在保证权限的同时
exec("/mnt/www/project/public/gitlab-webhook-php/master_deploy.sh");
需修改为exec(" sh /mnt/www/project/public/gitlab-webhook-php/master_deploy.sh");

www 用户 同时需要给 www 用户设置 Public Key Authentication
 

$ sudo mkdir /home/www
$ sudo -u www ssh-keygen -t rsa
...
$ cat /home/www/.ssh/id_rsa.pub

查看公钥 并在你的gitlab 中保存这个秘钥
参考链接
https://learnku.com/laravel/t/2824/gitlab-webhook-php-detailed-gitlab-webhooks-automatic-deployment-application-server

你可能感兴趣的:(linux)