gitlab ใช้ hook post-receive ภายในแล้ว คุณสามารถคลุกคลีกับสคริปต์นั้นและเรียกใช้ hook ของคุณเช่นกัน แต่จากเอกสารดูเหมือนว่า "ทางการ" เป็นวิธีที่จะใช้ "web-hooks" เช่นให้ gitlab โทรหา webserver ของคุณใน post-receive และ webserver ของคุณจากนั้น ดึงที่เก็บ ฉันไม่ได้ลองทำเอง แต่เนื่องจากไม่มีใครตอบฉันคิดว่าฉันจะชี้คุณไปในทิศทางนั้น:
เพื่อเปิดใช้งาน web-hooks เข้าไปในหน้าหลักของโครงการของคุณและเลือก hooks จากด้านขวาบนด้านล่างเมนูหลัก ( http://yourgitlab.example.net/yourproject/hooks ) มีตัวอย่าง & เอกสารเชื่อมโยงจากหน้านั้น ( http://yourgitlab.example.net/help/web_hooks )
แก้ไข: //
เช้านี้ฉันลองแล้ว นี่คือตัวอย่างสคริปต์ PHP จะถือว่าคุณได้โคลน repo แล้วและเว็บเซิร์ฟเวอร์มีการตั้งค่าการอนุญาต / ssh คีย์ที่จำเป็นทั้งหมด
<?php
$mirrordir='/srv/http/gitlabhooktest/gitmirror';
$gitdir=$mirrordir."/.git";
$json= file_get_contents('php://input');
#error_log($json);
$jsarr=json_decode($json,true);
#error_log(print_r($jsarr,true));
$branch=$jsarr["ref"];
if($branch=='refs/heads/master'){
$cmd="git --work-tree=$mirrordir --git-dir=$gitdir pull";
#error_log($cmd);
exec($cmd);
}