जेनकिन्स का उपयोग करके Xcode के विभिन्न संस्करणों पर स्वचालित रूप से iOS एप्लिकेशन बनाएं

यदि आपको पहले से ही इस सवाल के साथ संपर्क किया गया है कि "मुझे एक ताजा विधानसभा कहां मिल सकती है?", तो आप पूरी तरह से समझते हैं कि विधानसभा और वितरण के स्वचालन की आवश्यकता क्यों है। कोई भी नियमित काम पर अतिरिक्त समय बिताना नहीं चाहता है। हम iOSBetaBuilder ( http://www.hanchorllc.com/betabuilder-for-ios/ ) नामक एक उपयोगिता का उपयोग करते थे। यह एप्लिकेशन एक iOS एप्लिकेशन के AdHoc बिल्ड के वितरण को आसान बनाने के लिए डिज़ाइन किया गया है: आपको बस प्रोजेक्ट का नाम और संस्करण दर्ज करने की आवश्यकता है, वह पता (URL) जहां आप असेंबली रखना चाहते हैं, और जेनरेट किए गए इंडेक्स। Html और मेनिफ़ेस्ट प्राप्त किया गया है। यह पहली बार के लिए पर्याप्त है।

लेकिन जब परियोजना बगफिक्सिंग चरण में पहुंचती है, तो क्यूए के निर्माण और पुनर्प्रकाशन पर अतिरिक्त 5 मिनट खर्च करना अनिच्छुक और एक बार होता है। और जब कई परियोजनाएं होती हैं, और उनकी विधानसभाएं लंबी हो जाती हैं ... कंपनी के भीतर, परियोजनाओं की संख्या से गुणा किया गया समय बहुत महत्वपूर्ण हो जाता है, और स्वचालन के लिए समय आता है।

इस लेख में, हम आपको दिखाएंगे कि कैसे iOS एप्लिकेशनों की स्वचालित असेंबली को कॉन्फ़िगर करना, मेल नोटिफिकेशन भेजना और ग्राहक के परीक्षण और प्रदर्शन के लिए एक FTP सर्वर पर एप्लिकेशन प्रकाशित करना।

उन लोगों के लिए जो पहले से ही विषय में हैं, लेख के अंत में एक दिलचस्प खंड है: एक ही मशीन पर Xcode के विभिन्न संस्करणों के साथ विधानसभाओं को कैसे कॉन्फ़िगर किया जाए।

जेनकींस का उपयोग करके iOS एप्लिकेशन का स्वत: निर्माण कैसे सेट करें?

आपको जेनकिन्स स्थापित करने, कई प्लगइन्स को जोड़ने और कॉन्फ़िगर करने, ओटीए वितरण के निर्माण के लिए एक एजेंट जोड़ने और कॉन्फ़िगर करने की आवश्यकता है। यदि आप मेल द्वारा अधिक सूचनाएं प्राप्त करना चाहते हैं, तो आपको एक अतिरिक्त प्लग-इन कॉन्फ़िगर करने की आवश्यकता है।

So.

जेनकिंस क्या है? जेनकिंस एक निरंतर एकीकरण सर्वर है। जेनकिन्स जावा में लिखा गया है और कार्यक्षमता का विस्तार करने के लिए बड़ी संख्या में प्लगइन्स हैं। स्थापना के लिए सभी आवश्यक जानकारी https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins पर देखी जा सकती है

प्लगइन्स की खोज करने के लिए - https://wiki.jenkins-ci.org/display/JENKINS/Plugins , लेकिन Google भी एक अच्छा काम करता है जब आप जानते हैं कि आप क्या खोजना चाहते हैं।

हमारे सिस्टम की वास्तुकला इस प्रकार है:




इस प्रणाली को लागू करने के लिए, हमें निम्नलिखित प्लगइन्स की आवश्यकता है:


प्लगइन सेटिंग्स

एक विशिष्ट अनुप्रयोग के निर्माण के उदाहरण पर विचार करें। हमारे पास एक निश्चित परियोजना है जिसका स्रोत कोड Git रिपॉजिटरी में है:
git@github.com: ShareKit / ShareKit.git

हम इसे एकत्र करना चाहते हैं और इसे इंटरनेट के माध्यम से वितरण के लिए अपने आंतरिक सर्वर पर डालते हैं। जेनकिन्स की सर्वर तक पहुंच एफ़टीपी के माध्यम से है, अपाचे को सर्वर पर कॉन्फ़िगर किया गया है, और जो कुछ भी हम अपलोड करते हैं वह हमारे क्यूए विभाग या ग्राहकों के लिए एक विशेष साइट पर स्वचालित रूप से उपलब्ध हो जाता है।

एफ़टीपी
इसे स्थापित करने के बाद एफ़टीपी के लिए प्लगइन को कॉन्फ़िगर करने के लिए, आपको जेनकिंस सेटिंग पृष्ठ खोलने की आवश्यकता है:
जेनकिंस -> जेनकींस प्रबंधित करें -> सिस्टम कॉन्फ़िगर करें
सेटिंग्स में, एफ़टीपी के बारे में अनुभाग ढूंढें और सर्वर तक पहुंचने के लिए जानकारी दर्ज करें।



सहेजें।

Git
Git को कॉन्फ़िगर करने के लिए, आपको पेज पर Git इंस्टॉलेशन का विवरण जोड़ना होगा
जेनकिंस -> जेनकींस प्रबंधित करें -> सिस्टम कॉन्फ़िगर करें


पथ इंगित करता है कि कौन सा कमांड एजेंट पर Git चलाएगा। आपको पूर्ण पथ निर्दिष्ट करना होगा जहां गिट मशीन पर स्थित है जहां Xcode स्थापित है। आपको एक त्रुटि संदेश प्राप्त हो सकता है, लेकिन इस पर ध्यान न दें, क्योंकि जेनकिंस स्थानीय मशीन पर गिट के लिए पथ की जांच करता है, और रिमोट पर नहीं, जहां हम इसका उपयोग करेंगे।
सहेजें।

एक्सकोड एजेंट
रिमोट मशीन पर काम करने के लिए किसी भी जेनकिंस एजेंट के लिए, आपको सेटिंग पृष्ठ पर रिमोट मशीन तक पहुंचने के लिए क्रेडेंशियल्स जोड़ने की आवश्यकता है

जेनकिंस -> जेनकींस प्रबंधित करें -> क्रेडेंशियल्स प्रबंधित करें


मशीन की सार्वजनिक कुंजी को जोड़ना भी आवश्यक है, जिस पर जेनकींस मशीन के अधिकृत फ़ोल्डर में खड़ा होता है, जिस पर Xcode स्थापित है। प्रपत्र में उपयोगकर्ता नाम उपयोगकर्ता के नाम से मेल खाना चाहिए जिसके खाते में Xcode लॉन्च किया जाएगा। हमारे मामले में सार्वजनिक कुंजी के साथ फाइल करने का मार्ग इस प्रकार होगा: /Users/jenkins/.ssh/authorbKeys

हमारे उदाहरण में, Xcode IP पते 192.168.154.24 के साथ एक मशीन पर स्थापित है।
नोड सूची पृष्ठ पर, प्रोजेक्ट बनाने के लिए उपयोग किए जाने वाले एजेंट को जोड़ने के लिए
जेनकिंस -> जेनकींस प्रबंधित करें -> नोड्स प्रबंधित करें
न्यू नोड पर क्लिक करें, हमारे नोड XcodeAgent का नाम, डंब स्लेव चुनें, ठीक क्लिक करें।


मशीन की शक्ति और भार के आधार पर कलाकारों की संख्या किसी भी सेट की जा सकती है। हमारे पास कई एप्लिकेशन नहीं हैं, और एक धागा इसे संभाल सकता है। निर्देशिका हमारे उपयोगकर्ता के लिए सुलभ होनी चाहिए, हमारे मामले में - / उपयोगकर्ता / जेनकिंस / जेनकिंससी
मशीन का आईपी पता निर्दिष्ट करें, और हमारी साख चुनें:


सेव पर क्लिक करने के बाद, हम जॉब बनाने के लिए आगे बढ़ सकते हैं।

निर्माण अनुकूलन - नई नौकरी

एक नया कार्य बनाएँ:
जेनकिंस -> नई नौकरी


कार्य का नाम दर्ज करें, प्रकार चुनें एक फ्री-स्टाइल सॉफ़्टवेयर प्रोजेक्ट बनाएँ। ओके पर क्लिक करें। भविष्य में, मौजूदा वाले जैसे कार्यों को बनाने के लिए, सबसे अच्छा विकल्प "मौजूदा नौकरी की प्रतिलिपि बनाएँ" होगा।

स्रोत कोड अनुभाग में, Git चुनें, रिपॉजिटरी पता निर्दिष्ट करें (ShareKit उदाहरण के लिए इंगित किया गया है) और Git निष्पादन योग्य, जिसे हमने पहले कॉन्फ़िगर किया था:


हम शेष सेटिंग्स भरते हैं:


हम कितनी बार अपडेट के लिए संस्करण नियंत्रण प्रणाली से पूछताछ करना चाहते हैं - हम इसे "हर मिनट" डालते हैं। जैसा कि आप देख सकते हैं, जेनकिंस एच पैरामीटर का उपयोग करने का सुझाव देता है, जिसका अर्थ है कि लोड को कम करने के लिए एक यादृच्छिक मिनट में प्रति घंटे 1 बार मतदान होगा।


बिल्ड एक्शन जोड़ें: Xcode


कॉन्फ़िगरेशन आमतौर पर काफी सरल है। हम ग्राहक के लिए परीक्षण और प्रदर्शन के लिए एप्लिकेशन बनाने के लिए AdHoc प्रोफाइल का उपयोग करते हैं।

एक और बिल्ड एक्शन जोड़ें। इस बार हम अपने सर्वर पर एफ़टीपी के माध्यम से आवेदन प्रकाशित करने में रुचि रखते हैं:




मेल सूचनाएं जोड़ें

यदि आपके पास एक मेल सर्वर है, तो आप असेंबली के परिणामों के आधार पर ईमेल भेजने के लिए जेनकिन्स को कॉन्फ़िगर कर सकते हैं।
सबसे पहले सेटिंग पेज पर
जेनकिंस -> जेनकींस प्रबंधित करें -> सिस्टम कॉन्फ़िगर करें
वह ईमेल पता निर्दिष्ट करें जिससे उपयोगकर्ता पत्र प्राप्त करेंगे:


एसएमटीपी सर्वर, पोर्ट और उसी ईमेल के पते को निर्दिष्ट करें।


प्लगइन है कि हम स्थापित सेटिंग्स का एक और अनुभाग कहते हैं:


हम विषय पंक्ति के प्रारूप और प्रयुक्त टेम्पलेट को निर्दिष्ट कर सकते हैं। सभी टेम्पलेट फ़ाइल सिस्टम में हैं। टेम्प्लेट के बारे में विवरण प्लगइन पेज https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin#Email-extplugin-TemplateExamples पर मिल सकते हैं

इसके अलावा, प्लगइन आपको प्रत्येक बिल्ड स्थिति के लिए प्राप्तकर्ताओं और विभिन्न कॉन्फ़िगरेशन की एक सूची निर्दिष्ट करने की अनुमति देता है: उदाहरण के लिए, यदि आवेदन एकत्र नहीं किया गया है, तो एक अधिसूचना डेवलपर्स को भेजी जाती है, और परीक्षकों को एकत्र की जाती है। तस्वीर में उदाहरण विफल निर्माण और स्थिति को ठीक करने के लिए है।

उसके बाद, हमारी विधानसभा में पोस्ट-बिल्ड एक्शन जोड़ें:


और कॉन्फ़िगर करें:


हम बचाते हैं, लॉन्च करते हैं और आनंद लेते हैं!

दूसरा एक्सकोड

सब कुछ ठीक है जब आपने सिर्फ एक परियोजना शुरू की थी और केवल iOS के नवीनतम संस्करणों का समर्थन किया था, लेकिन समय बीत जाता है, दुनिया बदल जाती है, और Apple इसके लिए एक नया iOS और एक नया Xcode जारी करता है। ग्राहक समर्थन करने के लिए कहता है कि क्या हुआ और क्या है, और यह सवाल पुराने संस्करण के कीड़े को संपादित करने की आवश्यकता के बारे में उठता है जबकि एक नया विकसित किया जा रहा है।
बेशक, हम एक नया ब्रंच बनाते हैं, टैग लटकाते हैं और एक परीक्षण संस्करण प्रकाशित करने के लिए एक नया पता बनाते हैं। लेकिन Xcode का क्या?

प्लगइन Xcode के संस्करणों के बीच स्विच करने का समर्थन नहीं करता है, इसलिए हमारे पास दो हैं (शायद कोई और अधिक के साथ आएगा - लेकिन हम नहीं कर सकते) विकल्प:
  1. Xcode के साथ दूसरी मशीन को कॉन्फ़िगर करें और जेनकिंस में एक एजेंट जोड़ें
  2. शेल स्क्रिप्ट का उपयोग करके जेनकोड को Xcode पर स्विच करना


हम दूसरे रास्ते से गए।
आप काफी सरल स्क्रिप्ट का उपयोग करके Xcode बदल सकते हैं:
sudo xcode-select -switch $ XCodePathToDeveloperFolder
- स्थापित Xcode को स्विच करने के लिए आपके पास रूट विशेषाधिकार होना चाहिए
हालाँकि, ssh कमांड चलाते समय, पासवर्ड के साथ कठिनाइयाँ होती हैं और आप यह त्रुटि प्राप्त कर सकते हैं:
sudo: कोई tty मौजूद नहीं है और कोई askpass प्रोग्राम निर्दिष्ट नहीं है

ऐसा इसलिए है क्योंकि जेनकिंस एजेंट पर कमांड ssh के माध्यम से चलाए जाते हैं, जो टर्मिनल प्रदान नहीं करता है।
इस समस्या को हल करने के लिए, आपको एक फ़ाइल बनाने की आवश्यकता है, उदाहरण के लिए, / उपयोगकर्ता / जेनकींस / पास, जिसमें हमारे उपयोगकर्ता का पासवर्ड डालना है।
हमें XUDode को स्विच करने के लिए स्क्रिप्ट के लिए पाइप लाइन के माध्यम से एक पासवर्ड के साथ हमारी फ़ाइल की सामग्री को आउटपुट करने के लिए कमांड जोड़ने की आवश्यकता है:

बिल्ली / उपयोगकर्ता / जेनकींस / पास | sudo xcode-select -switch /Applications/XcodeVX.X.app/Contents/Developer


हम इस कमांड को बिल्ड चरण के रूप में जोड़ते हैं - शेल को हमारे कार्य के बिल्ड सेक्शन में पहले चरण के रूप में निष्पादित करें - Xcode से पहले।

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


हम जमा करते हैं। सब कुछ बढ़िया काम करता है।

यह ध्यान देने योग्य है कि एजेंट स्थापित करते समय हमने जो निष्पादक निर्दिष्ट किए थे, वे विधानसभा को प्रभावित कर सकते हैं यदि आप 1 से अधिक डालते हैं। तो सभी विधानसभाओं के लिए आपको आवश्यक संस्करण में Xcode स्विचिंग जोड़ना होगा।

निष्कर्ष

Source: https://habr.com/ru/post/In192784/


All Articles