Làm cách nào để thiết lập Gitlab với hook sau nhận?


19

Tôi đang sử dụng Gitlab trên một máy chủ và muốn đẩy kho git của mình theo cam kết của nhánh chính sang máy chủ web khác. Vì vậy, khi tôi đẩy một phiên bản mới của trang web, máy chủ sản xuất sẽ được cập nhật. Tôi biết điều này nên có thể với các móc bên trong gitlab nhưng tôi không thể tìm thấy chính xác như thế nào. Đã thử hướng dẫn sau http://danielmiessler.com/study/git/#website nhưng nó không được viết để sử dụng với gitlab nên tôi thiếu các phần.

Tôi cần làm gì trên máy chủ web sản xuất và sau đó tôi đặt URL hook là gì?


bạn có thể sử dụng hook git thông thường, nếu bạn có quyền truy cập root vào máy chủ git, hãy xem hook post-commit tại đây: git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
Doka

Bạn có thể thử móc Git tùy chỉnh .
monsta

Câu trả lời:


9

gitlab đã sử dụng hook sau nhận trong nội bộ. bạn có thể tìm hiểu về tập lệnh đó và gọi hook của bạn, nhưng từ các tài liệu có vẻ như cách "chính thức" sẽ là sử dụng "web-hook", tức là hãy để gitlab gọi máy chủ web của bạn sau khi nhận và máy chủ web của bạn kéo kho lưu trữ. Tôi đã không thử điều này bản thân mình, nhưng cho đến nay không ai trả lời, tôi nghĩ tôi sẽ chỉ cho bạn theo hướng đó:

để bật hook web đi vào trang chính của dự án của bạn và chọn hook từ trên cùng bên phải, bên dưới menu chính. ( http://yourgitlab.example.net/yourproject/hooks ). có một ví dụ & tài liệu được liên kết từ trang đó ( http://yourgitlab.example.net/help/web_hooks ).

chỉnh sửa://

Tôi đã thử nó sáng nay. Dưới đây là một ví dụ về tập lệnh php. Nó giả định rằng bạn đã nhân bản repo và máy chủ web có tất cả các quyền / khóa ssh cần thiết được thiết lập.

<?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);
} 

vâng tôi biết nơi để tìm các trang hook. Tôi chỉ không biết làm thế nào các tập tin nên trông giống như gitlab nên đăng lên.
Tristan

1
Xem câu trả lời được chỉnh sửa, tôi đã thêm một kịch bản ví dụ. có thể không hoàn hảo nhưng ít nhất một bài kiểm tra nhanh dường như có hiệu quả
Gryphius


4

Gitlab không có một cái móc sau nhận vì các nhà phát triển đã thay thế gitolite bằng gitlab-shell .

Do đó bạn có thể:

sudo -u git bash
touch /home/git/repositories/<repository name>.git/hooks/post-receive
vim /home/git/repositories/<repository name>.git/hooks/post-receive

Đảm bảo người dùng git có tất cả các quyền cần thiết để chạy các lệnh trong tệp này


hookthư mục đã tồn tại:hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/
MariuszS
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.