मेरे पास एक वीपीएस (लिनक्स) पर तैनात मेरा आवेदन (नोड.जेएस) है। मैं एक हब के रूप में गिट हब का उपयोग कर रहा हूं। मैं git पुश पर एप्लिकेशन को स्वचालित रूप से कैसे लागू कर सकता हूं?
मेरे पास एक वीपीएस (लिनक्स) पर तैनात मेरा आवेदन (नोड.जेएस) है। मैं एक हब के रूप में गिट हब का उपयोग कर रहा हूं। मैं git पुश पर एप्लिकेशन को स्वचालित रूप से कैसे लागू कर सकता हूं?
जवाबों:
PHP में उदाहरण:
अपने github भंडार में github पर नेविगेट करें "एडमिन" पर क्लिक करें
टैब पर क्लिक करें 'सेवा हुक' => 'वेबहूक यूआरएल'
और जोड़
http://your-domain-name/git_test.php
फिर git_test.php बनाएं
<?php
try
{
$payload = json_decode($_REQUEST['payload']);
}
catch(Exception $e)
{
exit(0);
}
//log the request
file_put_contents('logs/github.txt', print_r($payload, TRUE), FILE_APPEND);
if ($payload->ref === 'refs/heads/master')
{
// path to your site deployment script
exec('./build.sh');
}
Build.sh में आपको अपनी साइट को github से पुनर्प्राप्त करने के लिए सामान्य कमांड डालने की आवश्यकता होगी
उत्तर / टिप्पणियों के रूप में गिट हुक के कुछ उल्लेख थे, जो मेरे लिए अतीत में काम कर चुके हैं .. इसलिए यहां मेरी नुस्खा किसी और को अधिक विशिष्टताओं की आवश्यकता होनी चाहिए।
मैं सरल ऑटो परिनियोजन को पूरा करने के लिए git के बाद प्राप्त हुक और नोड-पर्यवेक्षक के संयोजन का उपयोग करता हूं (यह मानकर कि आप उस मशीन पर git रिमोट रिपॉजिटरी का उपयोग कर रहे हैं)।
अपना पोस्ट-प्राप्त हुक सेट करें
आपके भंडार में: sudo vi hooks/post-receive
और यह कुछ इस तरह दिखना चाहिए:
#!/bin/sh
GIT_WORK_TREE=/home/path/to/your/www
export GIT_WORK_TREE
git checkout -f
फ़ाइल अनुमतियां सेट करें: chmod +x hooks/post-receive
रेपो के लिए एक पुश के बाद Git आपकी ऐप डायरेक्टरी में फाइलों को रिफ्रेश करेगा।
नोड-पर्यवेक्षक के साथ नोड चलाएं
आपको वैश्विक नोड मॉड्यूल के रूप में अपनी मशीन पर नोड-पर्यवेक्षक स्थापित करने की आवश्यकता होगी: sudo npm install supervisor -g
अब केवल नोड-सुपरवाइज़र के साथ अपना नोड ऐप चलाएं और यह आपकी कार्यशील निर्देशिका में फ़ाइलों में परिवर्तन के लिए देखेगा:
supervisor /home/path/to/your/www/server.js
(नोट के supervisor
बदले node
)
npm install -l
दूरस्थ सर्वर पर कार्य करने वाली एक कार्यनीति स्मार्ट है। यह निश्चित रूप से पोस्ट-प्राप्त हुक का उपयोग करके आपकी विधि के साथ जोड़ा जा सकता है।
शायद यहाँ रेप करने में बहुत देर हो गई। लेकिन मुझे यह प्रोजेक्ट जीथब पर मिला और ऐसा लगता है कि आप जो करना चाहते हैं लेकिन बहुत साफ-सुथरे तरीके से करना चाहते हैं।
https://github.com/logsol/Github-Auto-Deploy
इसकी जांच - पड़ताल करें। यह जानने के लिए भी इच्छुक होंगे कि अन्य लोग टिप्पणियों और उत्थान के संदर्भ में इसके बारे में क्या सोचते हैं।
चीयर्स,
एस
एक परियोजना में मैं वर्तमान में विकसित कर रहा हूं मैं Jez Humble की शानदार पुस्तक "कंटीन्यूअस डिलिवरी" (अच्छी तरह से पढ़ने लायक) में शामिल दिशानिर्देशों का पालन करता हूं।
इसका मतलब है कि निरंतर एकीकरण सर्वर (मैं गो के थॉटवर्क्स मुक्त समुदाय संस्करण का उपयोग करता हूं) के कुछ प्रकार का उपयोग करके एक तैनाती पाइपलाइन बनाना , जो कि गुणवत्ता, जटिलता और चल रहे यूनिट परीक्षणों के लिए पहले आपके कोड की जांच करने के लिए जिम्मेदार है। यह तब एक परिनियोजन पाइपलाइन का अनुसरण कर सकता है जिसके परिणामस्वरूप आपके उत्पादन सर्वर को धक्का लग सकता है।
यह बहुत जटिल लगता है, लेकिन होना नहीं है, और कोड लिखने की पूरी प्रक्रिया करता है और यह इसे उत्पादन में सुरक्षित और चिंता मुक्त (कोई डरावना रिलीज दिन नहीं!) बना रहा है।
मैं लाइव सिस्टम के लिए पूर्ण परिनियोजन पाइपलाइन का उपयोग करता हूं, और npm मॉड्यूल के लिए एक कट डाउन संस्करण जो मैं लिखता हूं, और दोनों एक ही 1-परिनियोजन तकनीक साझा करते हैं।
मैंने सिर्फ आपकी समस्या के लिए नोड-आधारित समाधान प्रकाशित किया है: नोड-सीडी
यह आपके VPS पर चलने वाले एक सरल नोड ऐप में शामिल है जो Github को प्राप्त करने के बाद हुक प्राप्त करेगा और आपके द्वारा पसंद की गई स्क्रिप्ट को निष्पादित करेगा (उदाहरण के लिए एक शेल स्क्रिप्ट जो आपके ऐप को मार देगा, git पुल, और इसे पुनः आरंभ करेगा)।
यहां एक और सरल नोडजेएस कार्यान्वयन है।
यह एक बहुत ही सरल नोड सर्वर है जो होस्टनाम पर चलता है और आपके द्वारा कॉन्फ़िगर किया गया पोर्ट है और इसे GitHub पोस्ट को वेब हुक प्राप्त करने के लिए सेटअप किया जा सकता है। और वास्तविक पल्स / टेस्ट / तैनाती कार्यों को आप जो कुछ भी करना चाहते हैं उसे करने के लिए अनुकूलित किया जा सकता है। वर्तमान कार्यान्वयन में, यह एक शेल कमांड है जो नोडजेएस सर्वर स्क्रिप्ट में इनलाइन निर्दिष्ट है। और साथ ही एक बहुत ही सरल सीक्रेट_की आधारित सुरक्षा योजना है।
https://github.com/shyam-habarakada/rscds
मेरे मंचन सर्वर में पहले से ही नोड स्थापित और चल रहा था, इसलिए इसे लिखना त्वरित और आसान था।
मैंने पाया कि आसान तैनाती के लिए परियोजना गिट का उपयोग करती है।
मुझे लगता है कि यह आपके लिए उचित तरीका है।
इसकी जांच - पड़ताल करें।
यदि आप एक अजगर / बवंडर आधारित समाधान चाहते हैं, तो मैंने गितुब की वेबहुक सर्विसेज से POST अनुरोधों को संभालने के लिए एक स्क्रिप्ट लिखी । आप इसे https://github.com/Akobi/ops/tree/master/autodeploy पर पा सकते हैं
यह मूल रूप से एक JSON कॉन्फिग फाइल का उपयोग करता है जो यह बताता है कि आप किस पुश की अपेक्षा करते हैं, जो आप कमांड पर चलाना चाहते हैं, और कमांड को किस डाइरेक्टरी में चलना चाहिए। आपको बस इतना करना होगा कि आप अपनी पसंद और रन के लिए कॉन्फिगर फाइल को संशोधित करें। लिपी!
इसके अलावा, मैं अपनी स्क्रिप्ट में इन POST को आगे बढ़ाने के लिए Nginx को एक रिवर्स प्रॉक्सी के रूप में उपयोग करता हूं। आप 'नगनेक्स' फोल्डर के तहत उसी गिथब रेपो में निगंक्स कॉन्फिगर पा सकते हैं।
खुश धक्का!
मेरे विचार में PHP का उत्तर पूरी तरह से वैध है, लेकिन अगर आप रूबी को पसंद करते हैं, तो मैंने एक समाधान ब्लॉग किया। यह PHP उत्तर के समान ही है, बस एक अलग भाषा में। आप वेब हुक का उपयोग करते हैं और आपके पास प्रासंगिक HTTP अनुरोधों के लिए एक सरल स्क्रिप्ट है।
http://gilesbowkett.blogspot.com/2012/06/heroku-style-deployment-on-ec2.html
मैंने अपना स्वयं का अल्पविकसित परिनियोजन उपकरण बनाया है, जो स्वचालित रूप से रेपो से नए अपडेट को खींच लेगा - https://github.com/jesalg/SlimJim - मूल रूप से यह गिटबब पोस्ट-प्राप्त-हुक को सुनता है और एक ट्रिगर को चलाने के लिए प्रॉक्सी का उपयोग करता है अद्यतन स्क्रिप्ट।
मैं https://commando.io का संस्थापक हूं और हाल ही में हमने एक सेवा के माध्यम से GitHub के साथ एकीकरण की घोषणा की। जब आप GitHub रेपो में धकेलते हैं तो एकीकरण आपको सर्वर पर निष्पादन चलाने की अनुमति देता है। जब आप कोड को पुश करते हैं, तो परिनियोजन स्क्रिप्ट को स्वचालित रूप से चलाने के लिए यह एक सही अवसर है।
एक निष्पादन एक स्क्रिप्ट है जिसे आप Commando.io के अंदर लिखते हैं जिसे बैश, पर्ल, पाइथन, रूबी, गो, या नोड में लिखा जा सकता है। अधिक पढ़ने के लिए, और चलने की एक उदाहरण निष्पादन स्क्रिप्ट git pull
देखें, हमारे ब्लॉग पोस्ट की घोषणा देखें: http://blog.commando.io/run-executions-via-github-push/
Deepl.io इस स्पेस में नए और होनहार दावेदार लग रहे हैं।
सुविधाएँ (इसकी वेबसाइट से ली गई):
यह भी ध्यान दें कि REPOMAN.IO जैसी निशुल्क / सस्ती सेवाएं हैं जो आपके लिए लगभग सभी को स्वचालित करती हैं।