2013-12-03 2 views
4

서버에 GitLab 설정이 있습니다. 사용자가 새 프로젝트를 만들 때마다 수동으로 웹 후크를 추가해야합니다. Project -> Settings -> Web Hooks -> Add Web HookGitLab 새 프로젝트 설정 webhook

많은 사용자가 호스팅 된 GitLab에서 프로젝트를 만들므로 각 프로젝트마다 웹 후크를 개별적으로 설정하기가 어려울 것입니다 .

새로운 프로젝트를 만들 때 자동으로 (기본값으로) 새 프로젝트의 일부로 Web Hook을 설정하는 방법이 있습니까?

어떤 도움

이 많이 감사합니다.

답변

7

System Hooks API을 통해이를 자동화하는 방법을 찾을 수 있습니다. project_create 후크 이벤트를 듣고 project hook endpoint으로 전화하여 원하는 것을 추가하십시오.

끝까지 웹 훅입니다.

+0

감사 -S ! 그 트릭을 했어! –

+0

@KunalAggarwal 어떻게했는지 예제를 제공해 줄 수 있습니까? – Adrian

0

나는 모든 당신이 필요합니까 무엇이 스크립트를 발견

후크를 받아 봐 웹 후크의 쿼리 삽입을 실행

PHP로 실행 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; 
    } 
관련 문제