ट्रैविस सीआई क्या करता है और इसे कब इस्तेमाल किया जाना चाहिए, यह समझने की कोशिश कर रहा है


86

मैं Git के लिए बहुत नया हूं और मैं इसमें एक छोटी सी त्रुटि की खोज के बाद GitHub पर कुछ ओपन-सोर्स प्रोजेक्ट में योगदान करने की योजना बना रहा हूं। इसे फोर्क करने और त्रुटि को ठीक करने पर, मैंने एक पुल अनुरोध को हटा दिया और मैंने इस पर ध्यान दिया:

विफल - ट्रैविस सीआई बिल्ड विफल रहा

मेरे द्वारा खोजे गए विवरणों को देखते हुए, यह Could not find .travis.ymlसही अर्थ में था, क्योंकि मैंने ट्रैविस सीएल के साथ हस्ताक्षर नहीं किया था और रिपॉजिटरी में .travis.yml को शामिल नहीं किया था।

ट्रैविस के बारे में यह मेरी पहली सुनवाई है और जिसे निरंतर एकीकरण के रूप में जाना जाता है। और यह बहुत अच्छा लगता है इसलिए इसके बारे में अधिक जानने के लिए, मैंने इसे विकिपीडिया पर देखा।

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

ट्रैविस सीआई की मेरी वर्तमान समझ यह है कि यह जो करता है वह स्वचालित रूप से परियोजना को आगे बढ़ा git commit -am ".."रहा है और मैं इसके कुछ हिस्से को नहीं समझता।

  1. द्वारा परियोजना और चलाने के परीक्षण के निर्माण , क्या परीक्षण इसे चलाने के लिए जा रहा है? और यह परियोजना का निर्माण "कैसे" करने जा रहा है? (बाइनरी के लिए संकलन की तरह?)

  2. इसमें कहा गया है कि "इसमें सभी शाखाएँ शामिल हैं" - लेकिन क्या होगा अगर मैं सभी शाखाओं के लिए प्रतिबद्ध नहीं होना चाहता?

  3. यदि मैं ट्रैविस सीएल का उपयोग नहीं करता तो क्या यह ठीक है? किन परिस्थितियों में इसका उपयोग करना सबसे अच्छा है (या इसका उपयोग किया जाना चाहिए)?

जवाबों:


104

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


1
यह कहता है कि यह ओपन सोर्स प्रोजेक्ट्स के लिए "फ्री" है, लेकिन कहते हैं कि आपके पहले 100 बिल्ड फ्री हैं। तो ... यह मुफ़्त नहीं है? यहां तक ​​कि अकेले विकसित करने से मुझे बहुत जल्दी 100 बिल्ड मिल सकते थे। क्या मैं यह गलत पढ़ रहा हूँ? कहीं भी कोई जानकारी नहीं मिल सकती। @
जोशुआ

2
यह हमेशा ओपन सोर्स प्रोजेक्ट्स के लिए फ्री है। निजी पुनर्खरीद के लिए, आपको भुगतान योजना के लिए साइन अप करने से पहले 100 मुफ्त बिल्ड मिल जाते हैं।
जोशुआ-एंडरसन

विशिष्ट git वर्कफ़्लो सबसे हालिया प्रतिबद्ध को खींचकर स्थानीय स्तर पर विलय और परीक्षण कर रहा है और फिर रिमोट पर धकेल रहा है?
बेन

उन लोगों के बारे में जो कोणीय, प्रतिक्रिया, या Vue के लिए cli टूल के साथ वेब डेवलपमेंट करते हैं? देव सर्वर चलाते समय चौखटे तत्काल ट्रांसप्लिंग और परीक्षण प्रतिक्रिया प्रदान करते हैं। वहाँ और ट्रैविस CI के बीच कोई अंतर है, या मुझे सामान्य रूप से CI का उपयोग करने और उपयोग करने से पहले यूनिट परीक्षण चलाने के बीच कहना चाहिए?
ओजेजीजेंट

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

16

जैसा कि आप पहले ही जान चुके हैं कि ट्रैविस-सीआई क्या है, मैं सीधे आपके पास मौजूद सवालों की ओर इशारा करता हूँ।

परियोजना का निर्माण और परीक्षण चलाने से, यह किस परीक्षण को चलाने वाला है? और यह परियोजना का निर्माण "कैसे" करने जा रहा है? (बाइनरी को संकलित करना पसंद है?)

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


इसमें कहा गया है कि "इसमें सभी शाखाएँ शामिल हैं" - लेकिन क्या होगा अगर मैं सभी शाखाओं के लिए प्रतिबद्ध नहीं होना चाहता?

आप विभिन्न शाखाओं या masterशाखा को निर्दिष्ट कर सकते हैं । और यह केवल .travis.ymlफ़ाइल में निर्दिष्ट विशिष्ट शाखाओं को संकलित करना चाहिए ।


यदि मैं ट्रैविस सीएल का उपयोग नहीं करता तो क्या यह ठीक है? किन परिस्थितियों में इसका उपयोग करना सबसे अच्छा है (या इसका उपयोग किया जाना चाहिए)?

हाँ, यह ठीक है। कोई बड़ी बात नहीं। लेकिन अपने रेपो के साथ इंजन को एकीकृत करने के लिए इस आसान का उपयोग नहीं करने से आपको क्या लाभ होगा। हर बार जब आप यह करते हैं तो संभव है कि यह कुछ याद करता है और यह एक कोड के कारण संकलन नहीं कर सकता है। कैसे पता चलेगा? इस प्रकार, आपको ट्रैविस-सीआई का उपयोग करना चाहिए।


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


2

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

समाधान चेकआउट ट्रैविस सीआई वेबसाइट है और जानें कि यह कैसे काम करता है और यह उस परियोजना को कैसे प्रभावित करता है जिस पर आप काम कर रहे हैं। यह आपको यह समझने के लिए एक बहुत अच्छी स्थिति में रखेगा कि आपके कोड में क्या विफल हो रहा है और इसे कैसे ठीक किया जाए।

परियोजना के निर्माण के बारे में पहले प्रश्न का उत्तर देने के लिए।

परियोजना का निर्माण और परीक्षण चलाने से, यह किस परीक्षण को चलाने वाला है? और यह परियोजना का निर्माण "कैसे" करने जा रहा है? (बाइनरी को संकलित करना पसंद है?)

इसका मतलब है कि उपयोग / परीक्षण से पहले स्रोत कोड कैसे संसाधित किया जाता है। यह उस भाषा पर निर्भर करता है जिस पर आप लिख रहे हैं। उदाहरण के लिए, यदि प्रोजेक्ट PHP के साथ लिख रहा है। यह मेरे कोड को C / C ++ सोर्स कोड की तरह निष्पादन योग्य फ़ाइल में नहीं बनाने जा रहा है। यह PHP दुभाषिया पर मेरा PHP कोड चलाएगा और यह परीक्षण करेगा क्योंकि यह ऐसा करता है। यह अभी भी सामान्य संकलन प्रक्रिया के माध्यम से जाता है जो आपकी पसंदीदा भाषा के माध्यम से जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.