2009-11-11 11 views
8

तो मैं हडसन को पोस्ट-प्राप्त हुक के साथ बनाने की कोशिश कर रहा हूं। अपने स्थानीय Git रेपो में मैं बाद receive.sample बस के बाद प्राप्त करने के लिए निर्धारित करते हैं, 755 chmod और लाइन में कहा:गिट हुक और वे कैसे काम करते हैं

/usr/bin/curl -u user:secret http://localhost:8080/hudson/job/MyJob/build?token=secondsecret 

अगर मैं एक निर्माण के लिए मजबूर, हडसन कोड अद्यतन करता है, लेकिन यहाँ मैं क्या डॉन 'है टी समझ में नहीं आता है, उस रेपो में हुकों के पास उनके पास नमूना नहीं है जैसे वे स्थानीय रूप से करते हैं, और हडसन रेपो में पोस्ट-प्राप्त करने के पास उपरोक्त कोड की रेखा नहीं है। यहां क्या हो रहा है और पूरे गिट प्रक्रिया में हुक एकीकृत कैसे हैं? क्या मुझे रिमोट रेपो पर इस हुक को बदलने की ज़रूरत है? मैंने सोचा होगा कि यह स्थानीय रूप से ऐसा करने के लिए पर्याप्त था और उस रेपो से प्राप्त होने वाले किसी भी व्यक्ति को नए हुक मिलते हैं। मैं समझ नहीं पा रहा हूं कि दूसरे उपयोगकर्ता के रेपो में अलग-अलग हुक होंगे।

+0

मैं इस सवाल को समझ नहीं पा रहा हूं। जब आप रिमोट रिपॉजिटरी को दबाते हैं, तो रिमोट रिपोजिटरी 'पोस्ट-प्राप्त' हुक ** ** रिमोट रिपोजिटरी ** पर लगाया जाता है। –

+0

या लेकिन मेरा मुद्दा यह है कि यह मेरे कर्ल कमांड का आविष्कार नहीं कर रहा है, अगर मैं इसे मैन्युअल रूप से चलाता हूं, तो हडसन एक बिल्ड चलाता है, जब मैं पुश करता हूं, कोई बिल्ड नहीं चला जाता है। – brad

उत्तर

16

आप मूल रूप से दो विकल्प हैं:

  1. प्लेस सर्वर पर post-receive हुक और सर्वर रन कर्ल करते हैं।
  2. अपने स्थानीय रेपो पर post-commit हुक रखें और अपने स्थानीय बॉक्स को कर्ल चलाने दें।

अपने निर्माण काम शायद सर्वर पर रेपो से निर्माण करने के लिए कोड लायेगा के रूप में, एक ही विकल्प 1. समझ में आता है। 2 मामले में, बिल्ड जॉब को शायद आपके स्थानीय बॉक्स से कोड प्राप्त करना होगा, और संभवतः वह नहीं है जो आप चाहते हैं।

आप सर्वर पर git push का उपयोग करके हुक नहीं डाल सकते हैं। आप (या उचित अनुमति वाले किसी व्यक्ति को) को मैन्युअल रूप से सर्वर में लॉग इन करके और हुक स्क्रिप्ट फ़ाइलों को स्थानीय रूप से संशोधित करने की आवश्यकता है।

11

हुक को भंडार के माध्यम से साझा नहीं किया जाता है। आपको रिमोट साइड पर हुक स्थापित करने की आवश्यकता है।

+0

लेकिन मेरे स्थानीय को हुक जोड़ने से सर्वर नंबर पर कमांड का आह्वान करना चाहिए? अन्यथा हुक का मुद्दा क्या है? – brad

+8

+1 हुक संस्करण नियंत्रित नहीं हैं और भंडारों के बीच साझा नहीं किए जाते हैं। मुख्य रूप से यह सुरक्षा कारणों से है - किसी को अपने रेपो में कोड को धक्का देने देना एक बात है, यह एक और है कि ** ** आपके सर्वर पर कोड चलाएं। साथ ही, यह अक्सर सभी के लिए एक ही हुक रखने के लिए समझ में नहीं आता है - प्लेटफॉर्म अलग हो सकते हैं, पथ भिन्न हो सकते हैं, सर्वर के अलग-अलग उद्देश्यों (स्टेजिंग, सीआई, तैनाती, क्यूए, आदि) हो सकते हैं। –

+1

तो मेरे स्थानीय रेपो में हुक लिखने से प्रभावी ढंग से कुछ भी नहीं होता है? – brad

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