GithubHelp home page GithubHelp logo

gitlab-webhooks-php's Introduction

GitLab Web Hook For PHP

开始使用

  • Git:需要支持 -C 命令
  • PHP:需要有 exec 函数执行权限,使用前需要将 exec 函数从 disable_functions 列表中移除。

1. 克隆项目文件

git clone [email protected]:project/project.git project

2. 克隆 gitlab-webhooks-php

可以将本脚本 git clone 到任何地方,但需要确保可以使用 http 访问。

git clone [email protected]:ttionya/gitlab-webhooks-php.git
cd gitlab-webhooks-php

3. 配置 gitlab.php 文件

使用编辑器编辑 gitlab.php 文件

可编辑选项有:

  • $hookfile: 需要执行的 shell 脚本的地址,默认为 hook.sh
  • $logfile: 日志文件,默认为 hook.log
  • $project_dir: 项目路径,建议为绝对路径
  • $token: Token,用于鉴定来源是否合法。不仅需要在 GitLab 控制台的 Secret Token 中添加,还需要在 URL 中添加,例如 http://example.com/?token=xxxxxxx
  • $ref: 根据分支判断是否需要执行 git pull 操作。支持 * 指定任何分支,字符串 refs/heads/master 指定具体分支,正则表达式 /^refs\/heads\/(master|dev)$/i 匹配多个分支

4. 配置 GitLab 项目的 Webhooks

GitLab 控制台 => 选择项目 => Setting => Integrations 添加 Webhooks

举个栗子:

URL: http://example.com/?token=9998877

Secret Token: 9998877

5. 权限配置

大多数 Web Server 都会使用一个低权限的用户运行以确保安全,所以需要先确定 Web Server 使用的用户。

Apache:
$ 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
Nginx:
$ 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 控制台中。

设置项目目录和 Webhooks 目录的权限
chown -R www:www project
chown -R www:www gitlab-webhooks-php

6. 测试服务器是否通信成功

在 GitLab 控制台添加后点击 Test 按钮,查看日志文件是否被创建并包含内容。

致谢

许可证

MIT

gitlab-webhooks-php's People

Contributors

ttionya avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.