我在服务器上安装了GitLab。每次我在用户下创建一个新项目时,我都必须通过导航到Project -> Settings -> Web Hooks -> Add Web Hook
由于许多用户将在托管的GitLab上创建项目,因此很难为每个项目单独设置Web Hook。
有没有办法,以便在创建新项目时,它会自动(默认情况下)将Web Hook设置为新项目的一部分?
非常感谢任何帮助。
答案 0 :(得分:7)
您可能会找到一种通过System Hooks API自动执行此操作的方法。听取project_create
钩子事件,然后拨打project hook endpoint来添加你想要的那个。
它一直是webhook!
答案 1 :(得分:0)
我发现这个脚本你需要的是什么:
重新启动钩子并执行web hook的查询插入
使用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;
}