-C
命令
exec
函数执行权限,使用前需要将
exec
函数从
disable_functions
列表中移除。
git clone [email protected]:project/project.git project
可以将本脚本
git clone
到任何地方,但需要确保可以使用 http 访问。
git clone [email protected]:ttionya/gitlab-webhooks-php.git
cd gitlab-webhooks-php
使用编辑器编辑
gitlab.php
文件
可编辑选项有:
hook.sh
hook.log
Secret Token
中添加,还需要在
URL
中添加,例如
http://example.com/?token=xxxxxxx
git pull
操作。支持
*
指定任何分支,字符串
refs/heads/master
指定具体分支,正则表达式
/^refs\/heads\/(master|dev)$/i
匹配多个分支
GitLab 控制台 => 选择项目 => Setting => Integrations 添加 Webhooks
举个栗子:
URL: http://example.com/?token=9998877
Secret Token: 9998877
大多数 Web Server 都会使用一个低权限的用户运行以确保安全,所以需要先确定 Web Server 使用的用户。
$ ps -ef | grep httpd
root 2643 1 0 Jul09 ? 00:00:02 /usr/local/apache/bin/httpd -k start
www 7188 2643 0 03:03 ? 00:00:04 /usr/local/apache/bin/httpd -k start
www 7189 2643 0 03:03 ? 00:00:04 /usr/local/apache/bin/httpd -k start
www 7190 2643 0 03:03 ? 00:00:02 /usr/local/apache/bin/httpd -k start
www 7191 2643 0 03:03 ? 00:00:02 /usr/local/apache/bin/httpd -k start
www 7192 2643 0 03:03 ? 00:00:02 /usr/local/apache/bin/httpd -k start
$ ps -ef | grep php
root 2689 1 0 17:05 ? 00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www 2690 2689 0 17:05 ? 00:00:00 php-fpm: pool www
www 2691 2689 0 17:05 ? 00:00:00 php-fpm: pool www
www 2692 2689 0 17:05 ? 00:00:00 php-fpm: pool www
www 2693 2689 0 17:05 ? 00:00:00 php-fpm: pool www
此时使用的是低权限用户 www
则调用 SHELL 的用户就是 www
,所以需要为 www
用户添加 SSH 密钥。使用下面命令创建密钥,保存在 ~/.ssh/id_rsa
中:
ssh-keygen -t rsa -b 2048
把生成的 id_rsa.pub
粘贴到 GitLab 控制台中。
chown -R www:www project
chown -R www:www gitlab-webhooks-php
在 GitLab 控制台添加后点击 Test
按钮,查看日志文件是否被创建并包含内容。
https://github.com/bravist/gitlab-webhook-php/
https://gitlab.com/kpobococ/gitlab-webhook