एटलसियन बम्बू बनाम जेटब्रेन्स टीमसिटी - एक स्पष्ट विजेता है

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

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

मैंने उन सभी पर वार किया। मैंने ओपन सोर्स से शुरुआत की, लेकिन जेनकिंस और जीओसीडी हमारे लिए एक गंभीर दुःस्वप्न हैं। इंटरफ़ेस के कारण जेनकींस (नीले सागर के साथ भी), गुम एकीकरण और अनम्यता के कारण GOCD। मैं बहुत निराश था ...

मैंने सर्किल और सेमाफोर और व्हाट्सनॉट जैसे ज्ञात सास का मूल्यांकन करना शुरू कर दिया। लेकिन वे सभी महसूस करते थे कि मुझे बांस के साथ किए गए वर्कफ़्लो का एक पूरा टुकड़ा याद आ रहा है।

छोटे उपयोग के लिए नि: शुल्क

अंत में मैंने Jetbrains Teamcity के लाइसेंस के बारे में देखा और आश्चर्यचकित था, कि छोटे व्यवसायों के लिए एक निशुल्क टियर है। स्थापना को डॉकटर के साथ बनाना आसान था और सब कुछ बहुत स्वाभाविक लगने लगा। उपयोगकर्ता इंटरफ़ेस थोड़ा सा है, लेकिन यह सामान के साथ पैक किया गया है। मैं थोड़ा उलझन में था, लेकिन फिर सब कुछ के लिए बड़ी संख्या में विकल्पों पर बेच दिया। यूआई में एक सप्ताह सिर्फ एक हवा है। आप सब कुछ कस्टमाइज़ कर सकते हैं और मैं न केवल अपने सभी प्रोजेक्ट्स को बांस से टीमसिटी में स्थानांतरित कर सकता था बल्कि अपने पूरे सेटअप को बढ़ा सकता था।

मैंने हमेशा सोचा था कि CI और अंडरशेल्ड में टीमसिटी अंडरडॉग है, लेकिन यह नहीं था।

यहां उन विशेषताओं की सूची दी गई है जो मेरे उपयोग के मामले में बांस को कुचल रही हैं:

चर और विन्यास पैरामीटर्स के लिए स्वत: पूर्ण

प्रत्येक CI-Server में बहुत सारे वैरिएबल होते हैं, जिनका उपयोग किया जाना चाहिए। लेकिन उन्हें याद रखना हमेशा इतना मुश्किल होता है। बांस के प्रलेखन ने सभी चर सूचीबद्ध किए, लेकिन टीसी का विचार बहुत बेहतर है:

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

सीधा नेविगेशन

यूआई के लिए आपके पास उपयोग करने का एक कारण यह है कि मुख्य अभिनेताओं के पास एक छोटा तीर है।

टीमसीटी से यूआई में हर जगह छोटे तीर - एक लाल सर्कल के साथ चिह्नित

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

प्रसंग मेनस ने नेविगेट करते समय एक टन सुरक्षित किया

टेम्पलेट्स बनाएँ और तैनात करें

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

परियोजनाओं और परियोजनाओं-पदानुक्रम

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

मेटा रनर (आपके दिमाग को उड़ा देगा)

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

एक मेटा रनर की XML परिभाषा

इसने मेरे पैरों को खटखटाया। अगर केवल कुछ साल पहले मैं यह जानता था: मुझे बहुत तनाव से बचाया होगा! मैं अपने पूरे परीक्षण सूट को चलाने के लिए बिल्ड चरणों को बंडल करने के लिए मेटा धावकों का उपयोग करता हूं। जैसे phpunit रन यार्न परीक्षण, परीक्षण रिपोर्ट और सफाई का विश्लेषण करें।

Ssh कुंजियाँ अपलोड करें

बांस में ssh क्रेडेंशियल्स का उपयोग करना बहुत कठिन है। Teamcity में ऐसा करना बहुत आसान है आप यूआई द्वारा चाबियाँ अपलोड कर सकते हैं या बस उन्हें एक फ़ोल्डर में कॉपी कर सकते हैं, जिसे आप डॉकटर छवि पर माउंट करते हैं। फिर आप ssh कार्यों, scp या rsync के लिए हर जगह कुंजियों का उपयोग करते हैं। इतना आसान, इतना अच्छा सोचा - काश केवल वे ही उनके लिए तिजोरी प्रदान करते।

अपने बिल्ड के लिए सीधे एक ssh एजेंट प्रबंधित करें

क्या आपको कभी संगीतकार के साथ स्थापित करते समय अपने निजी रिपोज को एक्सेस करने में समस्या हुई है? क्या आपको कभी अपने बिल्ड में ssh कमांड जारी करने की आवश्यकता है? पुरे समय? सही!
एक Teamcity बिल्ड सुविधा आपको अपने बिल्ड में ssh क्रेडेंशियल्स जोड़ने की अनुमति देती है। यह तब एक ssh- एजेंट बनाता है, जो आपको इनलाइन स्क्रिप्ट का उपयोग करने की अनुमति देता है। यह उपयोग करने में आसान और साफ है। पहले किसी ने इसके बारे में क्यों नहीं सोचा?

"एक फ़ाइल चुनें" -dialogs

मैं यूआई में उन सभी चीजों को सूचीबद्ध नहीं कर सकता जो आपको ऐसा महसूस कराते हैं: “ओह! यह आसान है ”। यहाँ सिर्फ एक उदाहरण है। जब आप बांस में प्लगइन्स में फ़ाइलों को कॉन्फ़िगर करते हैं, तो आपको हमेशा सापेक्ष पथ को याद रखना होगा और वर्तमान कार्यशील निर्देशिका फिर से क्या थी? टीमसिटी में, आप कॉन्फ़िगर सेटिंग्स और बूम के बगल में छोटे आइकन पर क्लिक करते हैं: यह आपको अपने रिपॉजिटरी से नवीनतम चेक आउट सोर्स ट्री को सूचीबद्ध करता है।

अपने परीक्षण, लाइव और प्रत्यक्ष देखें!

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

निर्माण के दौरान टेस्ट प्रगति को लाइव दिखाया गया है

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

मैंने कभी नहीं सोचा था…

... कि मैं एक निरंतर एकीकरण सर्वर के साथ फिर से प्यार में होगा। Jetbrains, अपनी छवि के लिए कुछ करें। आप गंभीरता से सीआई-सर्वर के राजा होने के लायक हैं।

अस्वीकरण: Jetbrains ने इस टुकड़े को लिखने के लिए मुझे भुगतान नहीं किया या प्रोत्साहित नहीं किया।

मैं चाहता था कि यह टीमसिटी के बारे में प्रशंसा हो, न कि बांस के बारे में एक शेख़ी। यदि आप "बांस में क्या गलत है" के बारे में एक टुकड़ा में रुचि रखते हैं तो मुझे बताएं! मुझे विस्तार से खुशी होगी

कृपया मुझे ट्विटर पर फॉलो करें!