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