2011-09-05 17 views
24

हमारे पास लिनोड पर एक वीपीएस है, और गिटहब पर होस्ट किया गया कोड है। जब हम gitHub पर धक्का देते हैं तो हम सेटअप कैसे करते हैं, यह हमारे लिनोड सर्वर पर स्वचालित रूप से धक्का देता है। हम लिनोड सर्वर पर PHP का उपयोग कर रहे हैं।पुश पर गिटहब से सर्वर पर स्वचालित रूप से तैनात

धन्यवाद।

+0

इसे http://serverfault.com/ – sashang

उत्तर

21

शायद आप GitHub's post-receive hooks का उपयोग करना चाहते हैं।

संक्षेप में, जब कोई व्यक्ति रेपो पर जाता है तो गिटहब एक आपूर्ति किए गए यूआरएल पर पोस्ट करेगा। अपने लिनोड वीपीएस पर चलाने के लिए बस एक छोटी PHP स्क्रिप्ट लिखें और पोस्ट पोस्ट प्राप्त होने पर गिटहब से खींचें।

+0

पर पोस्ट करने में अधिक सहायता मिल सकती है यह बहुत अच्छा लगता है, लेकिन आप PHP से "github से कैसे खींचते हैं"? –

+1

मुझे लगता है कि कुछ लाइब्रेरी मौजूद है, लेकिन सबसे बुरे मामले में, आदर्श –

+0

से 'exec' का अधिक उपयोग अतिरिक्त अंतर्दृष्टि क्रिस्टियन के लिए धन्यवाद! –

13

मैंने पाइथन में एक छोटा Github-Auto-Deploy सर्वर लिखा, जो वही है जो आप चाहते हैं।

  • Github पर भंडार यूआरएल साथ
  • मैच स्थानीय भंडार पथ कॉन्फ़िग फ़ाइल में एक नया post-receive service hook के लिए अपने डोमेन दर्ज
  • सर्वर स्थानीय भंडार पथ
  • में GitHub और रन Git पुल से अनुरोध प्राप्त होगा यह तैनाती के लिए एक शेल स्क्रिप्ट भी चलाता है यदि आप एक
+2

आपकी लिब ने मुझे अपने स्वयं के कार्यान्वयन पर शुरू करने के लिए प्रेरित किया। https://github.com/danneu/captain-githook। अच्छी चीजें, दोस्त। – danneu

3

मैंने अपना खुद का प्राथमिक तैनाती उपकरण (कार्ल की तरह लेकिन PHP में) बनाने का अंत किया डी repo - https://github.com/jesalg/SlimJim से स्वचालित रूप से नए अपडेट खींचें - असल में यह github पोस्ट-प्राप्त-हुक को सुनता है और एक अद्यतन स्क्रिप्ट को ट्रिगर करने के लिए प्रॉक्सी का उपयोग करता है।

2

हो सकता है कि मैं संदर्भ से बाहर कर रहा हूँ, लेकिन मैं जहाँ मेरे आदेश पंक्ति जैसे से पुश करने के लिए मैन्युअल रूप से चयन करने के लिए पसंद करते हैं: git push linode

इस मैं अपने linode सर्वर में भंडार कंटेनर बनाने के ऐसा करने के लिए और एक के बाद प्राप्त हुक बनाया कि checkouts पिछले करने के लिए अपने फ़ोल्डर धक्का दिया प्रतिबद्ध

/var/repo/hooks/ touch post-receive nano post-receive chmod +x post-receive

में एक Git रेपो कंटेनर mkdir /var/repo && cd /var/repo git --bare init

बाद प्राप्त हुक बनाएँ सामग्री #!/bin/sh git --work-tree=/var/www/ --git-dir=/var/repo checkout -f

के बाद प्राप्त होता है अपने स्थानीय भंडार पर git remote add linode [email protected]<linode ip|domain>:/var/repo git push linode

अपने कोड अब तैनात है

+0

दिलचस्प। उसके लिये आपका धन्यवाद। मैं लिनोड की सिफारिश का पालन करूंगा @root उपयोगकर्ता का उपयोग न करें। इसके लिए गिट रेपो निर्देशिका और/var/www पर looser अनुमतियों की आवश्यकता है। मुझे यहां यह कैसे करना है इस पर प्रासंगिक जानकारी मिली: http://stackoverflow.com/a/6448326/2112538 –

0

आप इस ट्यूटोरियल का उल्लेख कर सकते:
Automatically Updating Your Website Using GitHub's Service Hooks:

संक्षेप में यह बताते हैं निम्नलिखित चरण:

php फ़ाइल.git में निम्न सामग्री के साथ अपने सर्वर पर फ़ोल्डर बनाएँ।

<?php `git pull`;?> 

सेटअप एस एसएच कुंजी के लिए अपने सर्वर का अस्तित्व।कुछ ऐसा:

key. cat ~/.ssh/id_rsa.pub 

गिटहब पर सेवा हुक सेट अप करें।

http://your.domain.com/path/to/yourfile.php 

जब सभी सेट है: WebHook यूआरएल दर्ज करें। प्रत्येक बार जब आप गिटहब पर धक्का देते हैं तो फाइल आपके सर्वर पर सभी कामों को तैनात कर रही है।

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