2014-06-11 11 views
7

मैंने /opt/gitlab-6.9.2-0/apps/gitlab/ पर सेंटो पर एक नया गिटलैब सेट किया और निरंतर वितरण समूह के तहत एक नया भंडार बनाया। पूरा पथ /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-satellites/continuous-delivery/cd-test है। इस पथ के तहत केवल एक फ़ाइल है जो README.txt है।मैं गिटलैब में हुक कैसे जोड़ सकता हूं?

जो मैं प्राप्त करने का प्रयास करता हूं वह है जब कोई सर्वर में परिवर्तन को धक्का देता है तो एक नई फ़ाइल बनाना है।

  1. .git/hooks/' each file creates a new file using गूंज "पाठ" >> के तहत post-update और update फ़ाइलें बनाएं file_name`
  2. उन्हें 775.

को chmod जब मैं से परिवर्तन धक्का: नीचे मैं सर्वर पर क्या किया है मेरे स्थानीय सर्वर पर, कोई फ़ाइल नहीं बनाई जा रही है। तो, मैं जानना चाहता हूं कि इस समस्या को ठीक करने के लिए मुझे क्या करना है।

अद्यतन 1

मैं VonC suggested

[[email protected] hooks]# pwd 
/opt/gitlab-6.9.2-0/apps/gitlab/repositories/continuous-delivery/cd-test.git/hooks 
[[email protected] hooks]# ll 
total 48 
-rwxrwxr-x. 1 git git 452 Jun 10 06:01 applypatch-msg.sample 
-rwxrwxr-x. 1 git git 896 Jun 10 06:01 commit-msg.sample 
-rwxrwxr-x. 1 git git 44 Jun 11 00:37 post-receive 
-rwxrwxr-x. 1 git git 41 Jun 11 00:38 post-update 
-rwxrwxr-x. 1 git git 189 Jun 10 06:01 post-update.sample 
-rwxrwxr-x. 1 git git 398 Jun 10 06:01 pre-applypatch.sample 
-rwxrwxr-x. 1 git git 1642 Jun 10 06:01 pre-commit.sample 
-rwxrwxr-x. 1 git git 1281 Jun 10 06:01 prepare-commit-msg.sample 
-rwxrwxr-x. 1 git git 1352 Jun 10 06:01 pre-push.sample 
-rwxrwxr-x. 1 git git 4972 Jun 10 06:01 pre-rebase.sample 
lrwxrwxrwx. 1 git git 57 Jun 10 06:01 update -> /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-shell/hooks/update 
-rwxrwxr-x. 1 git git 3611 Jun 10 06:01 update.sample 

रूप repositories पथ के लिए post-receive और post-update जोड़ा दोनों फ़ाइल एक स्क्रिप्ट है कि किसी मौजूदा फ़ाइल, "post-receive-2" >> /var/log/hooks_test.log लिए नई लाइन जोड़ सकते हैं। फिर मेरी स्थानीय मशीन से सर्वर पर परिवर्तन धक्का दिया। लेकिन यह अभी भी पाठ संलग्न नहीं करता है।

अद्यतन 2

स्क्रिप्ट में बाद प्राप्त गलत था, यह गूंज नहीं था। जब मैंने गूंज जोड़ा (echo "post-receive-2" >> /var/log/hooks_test.log तो यह अपेक्षित के रूप में काम करता है!

+0

[गिटलैब का उपयोग कर कस्टम पोस्ट-प्राप्त फ़ाइल] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/14317452/custom-post-receive-file-using- gitlab) –

उत्तर

7

ऐसा इसलिए होगा क्योंकि उन सैटेलाइट रिपोज़्स को वह नहीं है जिसे आप धक्का देंगे, इसलिए जब आप सोचेंगे तो उनकी हुक ट्रिगर नहीं होती है (यानी, जब कोई नहीं GitLab सर्वर से धक्का है)

PR 6185 शुरू की archicture सिंहावलोकन प्रलेखन

/home/git/gitlab-satellites -।।। मर्ज अनुरोधों के लिए खजाने और वेब UI से संपादन फ़ाइल की जाँच की यह एक अस्थायी फ़ाइलें निर्देशिका के रूप में इलाज किया जा सकता

उपग्रह भंडार का उपयोग वेब इंटरफ़ेस द्वारा रिपॉजिटरीज़ और विकी को संपादित करने के लिए किया जाता है जो कि एक गिट रिपोजिटरी भी है।

आपको अपने हुक को नंगे रेपो ~git/repositories में जोड़ना चाहिए।

या (अद्यतन Q4 2014, GitLab 7.5+ Nov 2014 से), तो आपको Doka द्वारा custom hooks (webhooks के बजाय), mentioned below के रूप में उपयोग कर सकते हैं।

कस्टम गिट हुक गिटलैब सर्वर के फाइल सिस्टम पर कॉन्फ़िगर किया जाना चाहिए।
केवल गिटलैब सर्वर प्रशासक इन कार्यों को पूरा करने में सक्षम होंगे। यदि आपके पास फाइल सिस्टम एक्सेस नहीं है तो कृपया वेबहुक को एक विकल्प के रूप में एक्सप्लोर करें।

  • GitLab सर्वर पर, परियोजना के भंडार निर्देशिका पर जाएँ।
    मैन्युअल रूप से स्थापित करने के लिए पथ आमतौर पर /home/git/repositories/<group>/<project>.git है।
    Omnibus के लिए पथ आमतौर पर /var/opt/gitlab/git-data/repositories/<group>/<project>.git स्थापित करता है।
  • custom_hooks नामक इस स्थान में एक नई निर्देशिका बनाएं।
  • नई custom_hooks निर्देशिका के अंदर, हुक प्रकार से मेल खाने वाले नाम वाली फ़ाइल बनाएं।
    pre-receive हुक के लिए फ़ाइल नाम pre-receive कोई विस्तार के साथ होना चाहिए।
  • हुक फ़ाइल निष्पादन योग्य बनाएं और सुनिश्चित करें कि इसका स्वामित्व git है।
+0

मैंने नंगे-भंडार में फ़ाइलों को जोड़ने का प्रयास किया लेकिन यह अभी भी काम नहीं करता है। मैंने सवाल पर और जानकारी दी। – Anonymous

+0

@ अनामित आप फ़ाइलों को एक नंगे रेपो में नहीं जोड़ते हैं: यह एक * नंगे * रेपो है (केवल गिट, केवल कोई फाइल नहीं)। http://stackoverflow.com/a/24115534/6309 देखें। आपके हुक को एक अलग पथ में फाइलें बनाना चाहिए। लेकिन धक्का से ट्रिगर होने के लिए उस हुक को नंगे रेपो में घोषित किया जाना चाहिए। – VonC

+0

ओह, मुझे समस्या मिली। पोस्ट-प्राप्त पर मैंने जो आदेश लिखा था वह गलत था। – Anonymous

2

gitlab-खोल संस्करण 2.2.0 (जो GitLab की आवश्यकता है 7.5+) के रूप में, GitLab व्यवस्थापक किसी भी GitLab परियोजना के लिए कस्टम Git हुक जोड़ सकते हैं। इसलिए आपको अपग्रेड करना होगा, और यहां से निर्देशों का पालन करना होगा: http://doc.gitlab.com/ce/hooks/custom_hooks.html

+0

दिलचस्प। मैं उस पिछले उत्तर के बारे में भूल गया था जो उस नई सुविधा से लाभ उठा सकता है।मैंने इसे अधिक दृश्यता के अनुसार संपादित किया है। +1 – VonC

1

इसे देखने के आधिकारिक तरीके के लिए Custom Git Hooks - GitLab Documentation देखें।

सारांश: गिटलैब-खोल संस्करण 2.2.0 (जिसे गिटलैब 7.5+ की आवश्यकता है) के रूप में, गिटलैब प्रशासक किसी भी गिटलैब प्रोजेक्ट में कस्टम गिट हुक जोड़ सकते हैं।

  1. एक परियोजना है कि एक कस्टम Git हुक की जरूरत है उठाओ।
  2. गिटलैब सर्वर पर, प्रोजेक्ट की रिपोजिटरी निर्देशिका पर नेविगेट करें। स्रोत से स्थापना के लिए पथ आमतौर पर/home/git/repositories/< समूह >/< प्रोजेक्ट > .git है। Omnibus के लिए पथ आमतौर पर/var/opt/gitlab/git-data/repositories/< समूह >/< प्रोजेक्ट > .git स्थापित करता है।
  3. custom_hooks नामक इस स्थान में एक नई निर्देशिका बनाएं।
  4. नई custom_hooks निर्देशिका के अंदर, हुक प्रकार से मेल खाने वाले नाम वाली फ़ाइल बनाएं। पूर्व-प्राप्त हुक के लिए फ़ाइल नाम को कोई एक्सटेंशन के साथ पूर्व-प्राप्त होना चाहिए।
  5. हुक फ़ाइल निष्पादन योग्य बनाएं और सुनिश्चित करें कि यह गिट द्वारा स्वामित्व में है।
  6. गिट हुक फ़ंक्शन को अपेक्षित के रूप में बनाने के लिए कोड लिखें। हुक किसी भी भाषा में हो सकते हैं। सुनिश्चित करें कि शीर्ष पर 'शेबांग' भाषा प्रकार को सही ढंग से दर्शाता है। उदाहरण के लिए, यदि स्क्रिप्ट रूबी में है तो शेबांग शायद #!/usr/bin/env ruby होगी।

लेकिन आधिकारिक दस्तावेज़ों के लिए उपरोक्त लिंक देखें। उपर्युक्त स्नैपशॉट है क्योंकि यह आज था ...

+0

क्षमा करें @Doka, मुझे आपका जवाब नहीं मिला। हमें एक ही जानकारी मिली। मैं अपना डुप्लिकेट उत्तर छोड़ दूंगा क्योंकि इसमें अधिक जानकारी है ... –

संबंधित मुद्दे