2011-11-22 8 views
5

मैं सोच रहा था कि एफटीपी और/या एसएसएच का उपयोग करके मेरी वेब-परियोजनाओं को कैसे तैनात किया जाए।जेनकींस: फाइलों को हटाने और स्थानांतरित करने सहित एफ़टीपी/एसएसएच परिनियोजन

वर्तमान में हम एक स्व-निर्मित तैनाती प्रणाली है जो इस संभाल करने में सक्षम है है, लेकिन मैं जेनकींस करने के लिए स्विच करना चाहते हैं।

मुझे पता है कि प्रकाशन प्लगइन्स प्रकाशित हैं और जब वे निर्माण कलाकृतियों को अपलोड करने की बात आती है तो वे अच्छी तरह से काम करते हैं। लेकिन वे फ़ाइलों को हटा या स्थानांतरित नहीं कर सकते हैं।

क्या आपके पास मेरी समस्या के बारे में कोई संकेत, सुझाव या विचार हैं?

उत्तर

2

Publish Over SSH प्लगइन दूरस्थ सर्वर से ssh का उपयोग कर आदेशों भेजने देता है। यह बहुत अच्छी तरह से काम करता है, हम नए संस्करण को तैनात करने से पहले कुछ चलती/हटाना फाइल भी करते हैं, और इस दृष्टिकोण का उपयोग करने में कोई समस्या नहीं थी।

+0

से हटाए गए होस्ट से फ़ाइलों को हटा देता है धन्यवाद, जो शायद मुझे अपने एसएसएच सर्वर के साथ मदद करेगा। लेकिन आपको जानकारी प्राप्त करने के लिए कौन सी फाइलें चाहिए स्थानांतरित/हटाया जाना है? गिट निश्चित रूप से इसे जानता है, लेकिन तैनाती वर्कफ़्लो में इसे एकीकृत कैसे करें? – 4eyes

+0

यदि आपके द्वारा चलने/हटाने में रुचि रखने वाली फ़ाइलें पहले से ही गिट में हैं, तो आप अपने डिप्लोमैंट सर्वर पर अपने रेपो को क्लोन कर सकते हैं और एसएसएच पर प्रकाशित करके परिवर्तनों को खींचने के लिए गिट कमांड लाइन का उपयोग कर सकते हैं। यदि आपके पास स्थैतिक फाइलें हैं, जिन्हें संकलित या चेक करने की आवश्यकता नहीं है, तो यह केवल एक अच्छा तरीका हो सकता है, केवल तैनाती की आवश्यकता है। यदि आपके पास स्रोत कोड और स्थैतिक फ़ाइलों के लिए अलग-अलग प्रतिनिधि हैं तो शायद सबसे अच्छा काम करेंगे। – pushy

+0

धन्यवाद। हमारी परियोजनाएं सभी "स्थिर" फाइलें हैं क्योंकि हम php (TYPO3) आधारित सॉफ़्टवेयर विकसित करते हैं। मुझे पता है कि मैं गिट का उपयोग करके स्थानांतरित/हटाई गई फ़ाइलों को प्राप्त कर सकता हूं, वास्तव में हम अपने स्वयं के साधारण फ़िंग आधारित तैनाती प्रणाली में कर रहे हैं। मैं बस आश्चर्यचकित हूं कि स्वच्छ और कुशल FTP/ssh परिनियोजन को कवर करने वाला प्लगइन प्रतीत नहीं होता है। मैं सोच रहा हूं कि अन्य कंपनियां अपनी वेब-प्रोजेक्ट्स कैसे तैनात करती हैं, क्या वे एफटीपी का उपयोग नहीं करते हैं? या लाइव सर्वर पर एसएसएच और/या गिट के साथ बस अधिक महंगा अनुकूलित होस्टिंग? – 4eyes

1

आइटम्स को हटाने और स्थानांतरित करने का सबसे आसान तरीका सर्वर पर सबकुछ हटाकर 'Publish over' एक्सटेंशन का उपयोग करके एक नई रिलीज को तैनात करने से पहले है। मैं कहूंगा कि तैनात संस्करण को जानना वास्तव में एकमात्र तरीका है जिसे आप चाहते हैं। यदि आप अधिक संस्करण-सिस्टम शैली व्यवहार चाहते हैं तो आपको या तो एक संस्करण सिस्टम या शायद rsync का उपयोग करने की आवश्यकता है जो इसके हिस्से को कवर करेगी।

यदि आपकी मांग बहुत विशिष्ट हैं तो आप हटाने के लिए अपना स्वयं का सम्मेलन विकसित कर सकते हैं और उन्हें एक अलग स्क्रिप्ट द्वारा निष्पादित किया जा सकता है (जैसे आप लिक्विबेस या ऐसा कुछ उपयोग करके डेटाबेस परिवर्तनों के लिए करेंगे)।

वैसे: मैं अपने आप हर 'पर प्रकाशित ...' एक्सटेंशन का उपयोग कर निर्माण करने के बाद अपने को लाइव साइटें जोड़ या अपडेट नहीं की सिफारिश करेंगे। यदि हम वास्तव में एक लाइव साइट स्वचालित रूप से अपडेट करना चाहते हैं तो हम इसे लगभग पूरी तरह से स्वचालित रखने के लिए Promoted Builds Plugin पर भरोसा करते हैं लेकिन थोड़ी सी सुरक्षा जोड़ें।

+0

आपकी सलाह के लिए सिमोन धन्यवाद, मैं प्रचारित बिल्ड प्लगइन की जांच करूंगा। वैसे भी, यह मुझे समझ में नहीं आता है, मुझे एक पूरी वेबसाइट अपलोड करने की आवश्यकता क्यों है, जब मैंने बस थोड़ा सीएसएस बदल दिया या एक स्क्रिप्ट में एक बग तय किया। किसी भी तरह, मुझे लगता है कि यह समस्या केवल एक है या हर कोई या तो अपनी वेबसाइट परियोजनाओं को एक फैनसीयर होस्टिंग (एसएसएच/गिट) में तैनात करता है या स्वचालित तैनाती का उपयोग नहीं कर रहा है। – 4eyes

0

मैं हटाए गए फ़ाइलों को हटाने और एक दूरस्थ LFTp दर्पण स्क्रिप्ट का उपयोग करके जेनकिंस में एक बिल्ड एक्शन के रूप में दूरस्थ FTP सर्वर में परिवर्तन अपलोड करने के लिए एक सरल समाधान के साथ आया था। Lftp Manual Page

कम में, आप अपने जेनकींस उपयोगकर्ता निर्देशिका ~/.netrc में एक कॉन्फ़िग फ़ाइल बना सकते हैं और अपने FTP पहचान के साथ पॉप्युलेट करें।

machine ftp.remote-host.com 
login mySuperSweetUsername 
password mySuperSweetPassword 

एक lftp स्क्रिप्ट deploy.lftp बनाएँ और अपने .git रेपो

set ftp:list-options -a 
set cmd:fail-exit true 
open ftp.remote-host.com 
mirror --reverse --verbose --delete --exclude .git/ --exclude deploy.lftp --ignore-time --recursion=always 

की जड़ में छोड़ फिर एक "Exec शैल" जोड़ने कार्रवाई का निर्माण स्क्रिप्ट पर lftp निष्पादित करने के लिए।

lftp -f deploy.lftp 

lftp स्क्रिप्ट

  • दर्पण होगा: सभी बदली हुई फाइलों
  • रिवर्स कॉपी: रिमोट होस्ट को स्थानीय फ़ाइलों धक्का। एक नियमित दर्पण दूरस्थ मेजबान से स्थानीय तक खींचता है।
  • वर्बोज़: क्या फ़ाइलों का निर्माण करने के लिए लॉग जहां अनुसरण किया गया के बारे में सभी नोट डंप
  • हटाएँ: दूरस्थ फ़ाइलें नहीं रह गया है Git रेपो
  • को बाहर में मौजूद निकालें: .git निर्देशिका या तैनाती प्रकाशित नहीं करते। एलएफटीपी स्क्रिप्ट।
  • अनदेखा-समय: फ़ाइल निर्माण समय के आधार पर प्रकाशित नहीं होगा। यदि आपके पास यह नहीं है, तो मेरे मामले में, गिट रेपो के एक नए क्लोन के बाद से सभी फाइलें प्रकाशित हुईं, फाइल ने टाइमस्टैम्प बनाया। यह अभी भी काफी अच्छी तरह से काम करता है हालांकि उनमें एक भी स्थान जोड़कर संशोधित फ़ाइलों को अलग और अपलोड के रूप में पहचाना गया था।
  • रिकर्सन: फ़ोल्डर्स के आधार पर प्रत्येक फाइल का विश्लेषण करने के बजाय यह निर्धारित करने के लिए कि क्या उनमें से कोई भी फाइल संभवतः संशोधित की गई थी। यह तकनीकी रूप से आवश्यक नहीं है क्योंकि हम समय टिकटें अनदेखा कर रहे हैं लेकिन मेरे पास यह वैसे भी है।

मैंने एक लेख लिखा है कि मैं वर्डप्रेस साइट के लिए keep FTP in sync with Git कैसे केवल एफ़टीपी के माध्यम से पहुंच सकता हूं। आलेख बताता है कि एफ़टीपी से गिट में सिंक कैसे करें, फिर जेनेटकिन्स को एफ़टीपी में बनाने और तैनात करने के लिए कैसे उपयोग करें। यह दृष्टिकोण सही नहीं है लेकिन यह काम करता है। यह केवल बदली गई फाइलों को अपलोड करता है और यह गिट रेपो (और इसके विपरीत)

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