Gitlab को पोस्ट-प्राप्त हुक के साथ कैसे सेटअप करें?


19

मैं एक सर्वर पर Gitlab का उपयोग कर रहा हूं और एक अन्य वेबसर्वर के लिए मास्टर शाखा की ओर से अपने git रिपॉजिटरी को पुश करना चाहूंगा। इसलिए जब मैं वेबसाइट के एक नए संस्करण को धक्का देता हूं तो उत्पादन सर्वर अपडेट हो जाता है। मुझे पता है कि यह गीतालाब के अंदर हुक के साथ संभव होना चाहिए लेकिन मैं यह पता लगाने में असमर्थ हूं कि वास्तव में कैसे। निम्नलिखित गाइड की कोशिश की गई http://danielmiessler.com/study/git/#website लेकिन यह gitlab इसलिए Im लापता भागों के साथ उपयोग के लिए नहीं लिखा है।

मुझे प्रोडक्शन वेबसर्वर पर क्या करने की आवश्यकता है और मैं हुक URL को तब तक कैसे सेट करूँ?


आप नियमित git हुक का उपयोग कर सकते हैं, यदि आपके पास git सर्वर पर रूट एक्सेस है, तो यहां पोस्ट-कम हुक देखें: git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
Doka

जवाबों:


9

gitlab आंतरिक रूप से पहले से प्राप्त हुक का उपयोग करता है। आप उस स्क्रिप्ट के साथ इधर-उधर हो सकते हैं और अपने हुक को भी कॉल कर सकते हैं, लेकिन डॉक्स से ऐसा लगता है कि "आधिकारिक" तरीका "वेब-हुक" का उपयोग करना होगा, यानी गिटलैब को अपने वेबसर्वर को पोस्ट-रिसीव और अपने वेबसर्वर पर कॉल करने दें। भंडार को खींचता है। मैंने खुद यह कोशिश नहीं की है, लेकिन जब से किसी ने भी जवाब नहीं दिया तो मुझे लगा कि मैं आपको उस दिशा में इशारा करूंगा:

वेब-हुक को सक्षम करने के लिए अपनी परियोजना के मुख्य पृष्ठ पर जाएं और मुख्य मेनू के नीचे, ऊपर दाईं ओर से हुक चुनें। ( http://yourgitlab.example.net/yourproject/hooks )। उस पृष्ठ ( http://yourgitlab.example.net/help/web_hooker ) से एक उदाहरण और डॉक्स जुड़ा हुआ है ।

संपादित करें: //

मैंने आज सुबह इसकी कोशिश की। यहाँ एक php स्क्रिप्ट उदाहरण है। यह मानता है कि आपने पहले ही रेपो का क्लोन बना लिया है और वेबसर्वर के पास सभी आवश्यक अनुमतियाँ / 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);
} 

हां, मुझे पता है कि हुक पृष्ठ कहां खोजना है। मुझे अभी नहीं पता कि फ़ाइल को कैसे दिखना चाहिए जैसे गिटलैब को पोस्ट करना चाहिए।
ट्रिस्टन

1
संपादित उत्तर देखें, मैंने एक उदाहरण स्क्रिप्ट जोड़ी। सही नहीं हो सकता है, लेकिन कम से कम एक त्वरित परीक्षण काम करने लगता है
ग्रिफियस

5

कस्टम हुक हाल ही में जोड़े गए (जब से ग्रिफ़ियस ने कहा कि नियमित हुक आंतरिक रूप से उपयोग किए जाते हैं): https://github.com/gitlabhq/gitlabhq/blob/667c0a909bde1c71f21d8ec9768e98b1c489030/doc/hooks/customs/customh

आप बस custom_hooksनंगे गिट रेपो में एक निर्देशिका बनाते हैं , और इसमें हुक डालते हैं, और फिर गिटलैब सुनिश्चित करता है कि वे भाग जाएं।


4

Gitlab में पोस्ट-पोस्ट हुक नहीं है क्योंकि डेवलपर्स ने gitlite को gitlab-shell से बदल दिया था

इसलिए आप कर सकते हैं:

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

सुनिश्चित करें कि git उपयोगकर्ता के पास इस फ़ाइल में कमांड चलाने के लिए आवश्यक सभी अनुमतियां हैं


hookफोल्डर पहले से मौजूद है:hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/
MariuszS
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.