2010-10-01 10 views
43

मैं अपने आईफोन ऐप्स के लिए एक स्वचालित रात का निर्माण सर्वर स्थापित करना चाहता हूं, और क्या काम करता है और क्या नहीं करता है, इस बारे में सलाह की तलाश में है।आईफोन ऐप्स के लिए एक स्वचालित बिल्ड सर्वर स्थापित करने के लिए सबसे अच्छा अभ्यास?

असल में, कुछ ऐसा जो कम से कम रात में सभी यूनिट परीक्षण चलाता है और हमारी आंतरिक वेबसाइट पर एक नया विज्ञापन बनाता है।

सभी डेवलपर लैपटॉप का उपयोग करते हैं (जो रातोंरात बंद हो जाएगा), इसलिए मैं ऐसा करने के लिए समर्पित मैक मिनी प्राप्त करने पर विचार कर रहा हूं।

मुझे यकीन नहीं है कि मुझे मानक मैक ओएस एक्स या सर्वर संस्करण प्राप्त करना चाहिए या नहीं।

कम से कम पहले प्रयास के लिए, मैं केवल वास्तविक काम करने के लिए क्रॉन्टाब से चलने वाली एक सरल खोल स्क्रिप्ट का उपयोग करने पर विचार कर रहा हूं। भविष्य में एक पूर्ण निरंतर एकीकरण सर्वर (हडसन इत्यादि) अच्छा होगा।

मैं पहले से ही, खोज के माध्यम से कुछ लेख मिल गया है, हालांकि वे काफी संक्षिप्त कर रहे हैं:

http://nachbaur.com/blog/how-to-automate-your-iphone-app-builds-with-hudson

http://blog.jeffreyfredrick.com/2008/11/27/continuous-integration-for-iphonexcode-projects/

है और यह भी इस stackoverflow सवाल कुछ उपयोगी सॉफ्टवेयर जानकारी है (हालांकि यह दो है साल अब पुराना हो):

Continuous Integration for Xcode projects?

किसी भी gu आइडेंट लोग इस बात पर दे सकते हैं कि उन्होंने एक बिल्ड सर्वर कैसे स्थापित किया है और किसी भी संभावित मुद्दे की सराहना की जाएगी।

धन्यवाद!

यूसुफ

+0

मैक ओएस एक्स सर्वर संकलन के संबंध में कुछ भी विशेष नहीं जोड़ता है। – Seth

+0

@shader ऐसा लगता है कि आपने उस सामग्री को हटा दिया है। – ThomasW

उत्तर

14

हडसन (या इसके कांटा Jenkins) स्थापित करने के लिए वास्तव में कड़ी मेहनत नहीं है; यह हम आंतरिक रूप से उपयोग करते हैं। हम सिर्फ आईफोन बिल्डों को नहीं चलाते हैं - असल में, आईफोन बिल्ड के लिए केवल एक अकेला मैक मिनी सेट अप है, और यह अपेक्षाकृत हालिया जोड़ है। कुछ समय के लिए हमारे पास अन्य विभिन्न प्लेटफार्मों के लिए आधा दर्जन अन्य दास हैं।

Meet Hudson पृष्ठ पर आप "टेस्ट ड्राइव" लिंक के माध्यम से इसके साथ खेल सकते हैं ताकि यह महसूस हो सके कि इसे सेट करना कितना आसान है। (यह उन चीजों में से एक है जिसने मुझे बेच दिया; यह शुरू करना वास्तव में आसान था, लेकिन अभी भी कॉन्फ़िगर करने योग्य, एक्स्टेंसिबल और शक्तिशाली है जो हमें पिछले कुछ वर्षों में विस्तारित रखने के लिए पर्याप्त है। यह वास्तव में हाथों की एक पतली ढेर को बदल देता है। लुढ़का स्क्रिप्ट और प्रोग्राम, जो लेखक होने के बावजूद, मैं आराम करने के लिए देखकर बहुत खुश था।)

हमारे पास एक बेवकूफ मैक ओएसएक्स सर्वर पर चल रहे हडसन बैकएंड हैं, लेकिन ऐसा कोई कारण नहीं है कि आप इसे नहीं चला सकें कहीं भी कहीं भी (लिनक्स, विंडोज़, मैक)।

निर्माण के लिए यह विन्यस्त करने के लिए के रूप में - यह ज्यादातर xcodebuild बुला और इसे पारित -project और -configuration तर्क, परियोजना विन्यास में खोल स्क्रिप्ट के बारे में 6 लाइनों है।

उदाहरण:

cd ${WORKSPACE}/Engineering/ 

set -e 
set -v 

xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution clean 
xcodebuild -project foo.xcodeproj -alltargets -configuration Release clean 
xcodebuild -project foo.xcodeproj -alltargets -configuration Debug clean 

xcodebuild -project foo.xcodeproj -alltargets -configuration Distribution 
xcodebuild -project foo.xcodeproj -alltargets -configuration Release 
xcodebuild -project foo.xcodeproj -alltargets -configuration Debug 

हम अभी तक एक सेवा के रूप में चलाने के लिए गुलाम सेट नहीं किया है - इस TODO सूची में है। जब भी हम मिनी को चालू करते हैं, हम अभी इसे जेएनएलपी के माध्यम से लॉन्च करते हैं।

रिपोजिटरी एसवीएन है, और हडसन मास्टर हमारे लिए https ऑथ जानकारी याद रखने का ख्याल रखता है।

हम सक्रिय रूप से Email-ext प्लगइन का उपयोग करते हैं, और एक बिल्ड टाइमआउट प्लगइन और एक ऑडिट ट्रेल प्लगइन है क्योंकि सिस्टम का उपयोग करने वाले बहुत से अन्य लोग हैं और कुछ बिल्ड अच्छी तरह से व्यवहार नहीं कर रहे हैं। हमने Warnings प्लगइन और Static Code Analysis plugins के साथ संक्षेप में प्रयोग किया है, साथ ही उन परियोजनाओं पर उपयोग करने की आवश्यकता है (हमारे पास आमतौर पर निर्माण में त्रुटियों के रूप में चेतावनियां होती हैं, लेकिन हम कुछ परियोजनाओं पर पीसी-लिंट और अन्य टूल्स का उपयोग करते हैं; आउटपुट समेकित और यहां ट्रैक किया गया बहुत अच्छा है)। अंत में सभी महत्वपूर्ण Chuck Norris और Emotional Hudson प्लगइन्स।

हम वर्तमान में किसी भी आईफोन बिल्ड पर यूनिट परीक्षण (शर्मनाक!) नहीं चला रहे हैं, और हम बिल्डों को संग्रहीत करने के लिए हडसन में निर्मित सामान्य "आर्काइव आर्टिफैक्ट्स" कार्यक्षमता का उपयोग करते हैं। इन्हें हडसन वेब इंटरफ़ेस के माध्यम से अधिकृत उपयोगकर्ताओं के माध्यम से एक्सेस किया जा सकता है। मुझे कोई संदेह नहीं है कि आपके यूनिट परीक्षणों को ढांचे के भीतर चलाने के लिए मुश्किल नहीं होगी।

</fanboy >

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

+0

योग्य साइड नोट: .zip कि हडसन अपने वेब इंटरफ़ेस से उत्पन्न करता है _not_ सबमिट करने योग्य है! Symlink जानकारी के बारे में कुछ संरक्षित नहीं किया जा रहा है। आपको ऐप स्टोर के लिए अपना अंतिम सबमिशन ज़िप बनाने के लिए फाइंडर का उपयोग करना होगा - या यह पता लगाएं कि बिल्ड स्क्रिप्ट में ज़िप कैसे करें, जिसमें लिंक और अनुमतियों को सुरक्षित रखने के लिए सही विकल्प हैं। – leander

+1

हे लींडर, मैं बस इसे स्वयं स्थापित करना शुरू कर रहा हूं। मैं निम्नलिखित ब्लॉग पोस्ट में भाग गया और सोच रहा था कि यह डब्ल्यू में मदद करता है। symlink जानकारी संरक्षित नहीं की जा रही है: http://silent-code.blogspot.com/2009/07/iphone-app-distribution-made-easy-part_1466.html – nazbot

+0

@nazbot: बढ़िया, धन्यवाद, इसे आजमाएं। – leander

6

मुझे एहसास हुआ कि यह थोड़ी देर हो गया है क्योंकि यह धागा अंतिम अपडेट किया गया था, लेकिन तब से मैं एक नए निरंतर एकीकरण (सीआई) सर्वर में आया हूं। या वास्तव में अपनी नई नहीं है, लेकिन अपनी एकीकृत मैक/आईओएस के लिए समर्थन बनाता है नया है :)

इसके JetBrains से TeamCity उत्पाद http://www.jetbrains.com/teamcity/

पर उपलब्ध हम इसे सफलतापूर्वक ग्राहक मैं जावा परियोजनाओं के निर्माण के लिए के लिए काम पर उपयोग करते हैं, लेकिन हम आईओएस के निर्माण के लिए एक सेटअप के लिए भी जाएंगे क्योंकि यह हमारे उत्पाद श्रृंखला का एक बड़ा हिस्सा बन रहा है।

सेटअप करने के लिए यह काफी आसान है और किसी प्लेटफ़ॉर्म को चला सकता है, लेकिन बिल्डगेंट को मैक कंप्यूटर चलाया जाना चाहिए।

आशा इस मदद करता है :)

0

एक नया विकल्प Xcode 5 मैक ओएस एक्स 10.9 (मावेरिक्स) और OS X सर्वर के साथ संयुक्त है। ओएस एक्स सर्वर में अब एक एक्सकोड सर्वर घटक है जो स्वचालित परीक्षण चलाने के लिए अच्छा है।

यह कर सकते हैं:

  1. बिल्ड (+ चेतावनी के लिए जाँच)
  2. विश्लेषण
  3. आईओएस सिम्युलेटर पर चलाने के परीक्षण + USB
  4. साथ इससे जुड़े सभी जुड़े उपकरणों (यानी स्थिर विश्लेषण बजना।)

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

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