GitLab新项目设置Webhook

4
我在服务器上安装了GitLab。每次在我的账户下创建新项目时,我都必须手动添加Web Hook,方法是导航到 项目 -> 设置 -> Web Hooks -> 添加 Web Hook 由于许多用户将在托管的GitLab上创建项目,因此为每个项目单独设置Web Hook将很困难。
有没有一种方法,使得当创建新项目时,它会自动(默认)设置一个Web Hook作为新项目的一部分?
非常感谢您的帮助。
2个回答

8

@KunalAggarwal 你能提供一个你是如何做到的例子吗? - Adrian

0
我找到了这个脚本,它包含以下内容:
接收钩子并执行 Web 钩子的插入查询
使用 php -S 0.0.0.0:8080 运行
  <?php
  $allowed_host = "ip_of_your_gitlab_server";
  $sql_host = "localhost_or_ip_of_your_mysql_server";
  $sql_user = "..";
  $sql_password = "..";
  $database = "gitlabhq_production";

  if ($_SERVER['REMOTE_ADDR'] == $allowed_host) { // ofc you could increase security with some kind of API key or w/e
      $sql = mysqli_connect($sql_host, $sql_user, $sql_password, $database);
      if (mysqli_connect_errno()) {
          exit;
      }
      $file = fopen("/tmp/sql_error", "a"); // you can use this as debug log too ;)

      $input = json_decode(file_get_contents('php://input'), true);
      $pid = $input['project_id'];

      if ($input['event_name'] == "project_create") {
          $url = 'url_of_your_project_hook';
          // this creates a project hook, specify it for your needs..
          $q = mysqli_query($sql, "INSERT INTO gitlabhq_production.web_hooks (url, project_id) VALUES('$url', '$pid')");

          if (!$q) fwrite($file, $sql->error);
      } elseif ($input['event_name'] == "project_destroy")
          $q = mysqli_query($sql, "DELETE FROM gitlabhq_production.web_hooks WHERE project_id='$pid'");

      mysqli_close($sql);
  } else {
      // redirect?
      exit;
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接