PHP प्रोजेक्ट्स के लिए एक परिनियोजन / बिल्ड / CI चक्र स्थापित करना


200

मैं अपने समय का एक अकेला डेवलपर हूं, जो कई बड़ी, मुख्य रूप से PHP- आधारित परियोजनाओं पर काम कर रहा है। मैं पेशेवर बनाना और स्वचालित करना चाहता हूं कि कोड आधार में परिवर्तन कैसे संभाला जाता है, और एक सतत एकीकरण प्रक्रिया बनाई जाती है जो मौलिक परिवर्तन किए बिना टीम में काम करने के लिए संक्रमण को संभव बनाती है।

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

"निर्माण चक्र" मैं कल्पना कर रहा हूं निम्नलिखित कार्य करेंगे:

  • स्थानीय स्तर पर परीक्षण के बाद एसवीएन में एक बदलाव की जाँच की जाती है।

  • मैं निर्माण प्रक्रिया शुरू करता हूं। SVN HEAD संशोधन की जाँच की जाती है, यदि आवश्यक हो तो संशोधित किया जाता है, और अपलोड के लिए तैयार किया जाता है।

  • एपीआई प्रलेखन स्वतः उत्पन्न हो जाता है - अगर मैंने इसे अभी तक विस्तार से सेट नहीं किया है, तो डिफ़ॉल्ट टेम्पलेट का उपयोग करके, पूरे कोड आधार को स्कैन करना।

  • नए संशोधन FTP के माध्यम से दूरस्थ स्थान के लिए तैनात किया गया है (कुछ निर्देशिका नाम भी शामिल है, chmodding डेटाबेस आयात करने, और पसंद।) यह कुछ मैं पहले से ही की तरह है Phing बहुत ज्यादा के लिए, लेकिन मैं निश्चित रूप से विकल्प के लिए खुला रहा हूँ।

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

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

  • कोड मेट्रिक्स, कोड स्टाइल चेकिंग वगैरह जैसी चीजें अभी मेरा प्राथमिक फोकस नहीं हैं, लेकिन लंबे समय तक, वे निश्चित रूप से करेंगे। समाधान जो इस आउट-ऑफ-द-बॉक्स को लाते हैं, वे बहुत दयालु हैं।

मैं खोज रहा हूँ

  • उन लोगों से प्रतिक्रिया और अनुभव जो एक समान स्थिति में हैं या हैं, और इसके लिए एक समाधान सफलतापूर्वक लागू किया है

  • विशेष रूप से, अच्छा कदम-दर-चरण ट्यूटोरियल और इसे स्थापित करने के तरीके पर चलना

  • समाधान जो यथासंभव स्वचालन प्रदान करते हैं , उदाहरण के लिए एक कंकाल एपीआई, परीक्षण मामलों और प्रत्येक नई परियोजना के लिए बनाकर।

और भी

  • उत्पाद की सिफारिशें । अब तक जो मुझे पता है, वह निर्माण के लिए फिंग / चींटी है, और रिपोर्टिंग भाग के लिए phpUnderControl या हडसन । मैं उन सभी को पसंद करता हूं जहां तक ​​मैं देख सकता हूं, लेकिन मुझे निश्चित रूप से उनके साथ कोई विस्तृत अनुभव नहीं है।

मैं काम के साथ बह गया हूं, इसलिए मेरे पास सरल समाधानों के लिए एक मजबूत झुकाव है। दूसरी ओर, यदि कोई सुविधा गायब है, तो मैं इसके बारे में बहुत सीमित होने के बारे में रोऊंगा। :) बिंदु और क्लिक समाधान का स्वागत करते हैं, भी है। मैं वाणिज्यिक उत्पाद सिफारिशों के लिए भी हूं जो PHP परियोजनाओं के साथ काम कर सकते हैं।

मेरा सेटअप

मैं स्थानीय रूप से विंडोज पर काम कर रहा हूं (7, सटीक होना) और ज्यादातर क्लाइंट प्रोजेक्ट्स एक LAMP स्टैक पर चलाए जाते हैं, अक्सर साझा होस्टिंग (= कोई दूरस्थ एसएसएच) पर नहीं। मैं उन समाधानों की तलाश में हूं, जिन्हें मैं अपने वातावरण में चला सकता हूं। मैं इसके लिए लिनक्स वीएम सेट करने के लिए तैयार हूं, कोई बात नहीं। होस्ट किए गए समाधान मेरे लिए केवल तभी दिलचस्प होते हैं जब वे वर्णित सभी पहलुओं को प्रदान करते हैं, या प्रक्रिया के अन्य हिस्सों के साथ बातचीत करने के लिए पर्याप्त लचीले होते हैं।

बाउंटी मैं उस उत्तर को स्वीकार कर रहा हूं जो मुझे लगता है कि मुझे सबसे अधिक लाभ देगा। यहाँ बहुत सारे उत्कृष्ट इनपुट हैं, काश मैं एक से अधिक उत्तर स्वीकार कर सकता। सबको धन्यवाद!

जवाबों:


76

मैं buildbot , CruiseControl.net , CruiseControl और हडसन के माध्यम से गया हूँ । हालांकि मुझे वास्तव में क्रूज़कंट्रोल * बहुत पसंद था, यह वास्तव में जटिल निर्भरता के मामलों में बहुत परेशानी थी। बिल्डबोट को स्थापित करना आसान नहीं है, लेकिन इसे एक अच्छी आभा मिल गई है (मुझे सिर्फ अजगर पसंद है, बस इतना ही)। लेकिन हडसन ने पूर्व तीन में जीत हासिल की क्योंकि:

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

कैविएट: मैंने कभी भी उपर्युक्त बिल्ड सर्वरों के लिए बेस के रूप में लिनक्स का उपयोग किया था (CC.net मोनो पर चला गया ), लेकिन उन्हें डॉक्स के अनुसार - क्रॉस-प्लेटफॉर्म चलाना चाहिए।

एक हडसन सर्वर की स्थापना

आवश्यक शर्तें:

  • जावा (1.5 आपकी ठीक सेवा करेगा)
  • तोड़फोड़ सर्वर तक पहुंच पढ़ें (मेरे पास हडसन उपयोगकर्ता के लिए एक अलग खाता है)

यहाँ से, यह सिर्फ:

java -jar hudson.war

यह आपके कंसोल से एक छोटा सर्वर इंस्टेंस चलाएगा, और आपको अपने इंस्टॉलेशन को ब्राउज़ करने में सक्षम होना चाहिए http://localhost:8080, यदि आपके पास पहले से उस पोर्ट पर कुछ और नहीं चल रहा है (आप --httpPort=ANOTHER_HTTP_PORTविकल्प को पास करके किसी अन्य पोर्ट को निर्दिष्ट कर सकते हैं । ऊपर कमांड) और सब कुछ 'स्थापना' प्रक्रिया में अच्छी तरह से चला गया।

यदि आप उपलब्ध प्लगइन्स निर्देशिका ( http://localhost:8080/pluginManager/available) में जाते हैं, तो आपको अपने उपर्युक्त कार्यों का समर्थन करने के लिए प्लगइन्स मिलेंगे (तोड़फोड़ का समर्थन प्रति डिफ़ॉल्ट स्थापित है)।

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

अद्यतन : कोह्सके कावागुची ने हडसन के लिए एक विंडोज़ सेवा इंस्टॉलर का निर्माण किया है

हडसन में एक परियोजना की स्थापना

निम्नलिखित वाक-थ्रू के लिंक पर स्थित हडसन के एक चल रहे उदाहरण को मानता है http://localhost:8080

  1. http://localhost:8080/view/All/newJobबाईं ओर मेनू से नई नौकरी ( ) चुनें
  2. काम को एक नाम दें और Build a free-style software projectसूची पर टिक करें
  3. 'ओके' दबाने पर आप नौकरी के कॉन्फ़िगरेशन पेज पर पहुंच जाएंगे। सभी विकल्पों में उनके अलावा थोड़ा प्रश्न चिह्न है। इसे दबाने से विकल्प के बारे में एक मदद पाठ आएगा।
  4. विकल्प समूह 'स्रोत कोड प्रबंधन' के तहत आप तोड़फोड़ का उपयोग करेंगे। हडसन दोनों यूआरएल एक्सेस और साथ ही स्थानीय मॉड्यूल एक्सेस स्वीकार करता है
  5. विकल्प समूह 'बिल्ड ट्रिगर' के तहत, आप 'पोल एससीएम' का उपयोग करेंगे। यहाँ इस्तेमाल किया गया वाक्यविन्यास क्रोन का है, इसलिए हर 5 मिनट में तोड़फोड़ रिपॉजिटरी को मतदान करना होगा*/5 * * * *
  6. परियोजना के निर्माण की प्रक्रिया विकल्प समूह 'बिल्ड' के तहत निर्दिष्ट है। यदि आपके पास पहले से ही आपके द्वारा आवश्यक सभी लक्ष्यों के साथ एक एंट बिल्ड फ़ाइल है, तो आप भाग्य में हैं। बस 'Invoke ant' चुनें और लक्ष्य का नाम लिखें। विकल्प समूह बॉक्स के बाहर मावेन और शेल कमांड का समर्थन करता है, लेकिन फ़िंग के लिए एक प्लगइन भी उपलब्ध है
  7. ई-मेल सूचनाओं या बिल्ड आर्टिफैक्ट्स के संग्रह जैसे 'पोस्ट बिल्ड एक्शन' में अतिरिक्त बिल्ड एक्शन को टिक करें।

उन प्रक्रियाओं को स्थापित करने के लिए जिनके लिए हडसन के पास कोई प्लग-इन नहीं है, आप या तो उन्हें बिल्ड सेटअप के भीतर से शेल स्क्रिप्ट के माध्यम से सीधे कॉल कर सकते हैं, या आप खुद ही प्लगइन लिख सकते हैं

नुकसान:

  • यदि आपके पास यह निर्माण कलाकृतियाँ हैं, तो याद रखें कि हडसन नियमित अंतराल में खुद को साफ करता है।
  • यदि आपके पास 20 से अधिक परियोजनाएँ हैं, तो अपने निर्माण की स्थिति को हडसन के डिफ़ॉल्ट मुख्य पृष्ठ के रूप में प्रदर्शित नहीं करने पर विचार करें

सौभाग्य!


2
मुझे लगता है कि आपके क्रोन सिंटैक्स में कोई त्रुटि है। यह हर घंटे के पांचवें मिनट पर चलता है। यदि आप हर 5 मिनट में रेपो को प्रदूषित करना चाहते हैं, तो आपको * / 5 का उपयोग करने की आवश्यकता होगी
ब्रायन विग्गिंटन

2
@BrianWigginton: आप पूरी तरह से सही हैं। और मैंने पोस्ट को ठीक करने की भी कोशिश की, लेकिन मैं इसे नहीं बचा सकता क्योंकि मेरे पास "एक अमान्य होस्टनाम का संदर्भ" है, जिसका नाम 'लोकलहोस्ट' है। मुझे उम्मीद है कि लोग सुधार के लिए यहां देखें।
स्टीन

22

आप जिस शब्द की तलाश कर रहे हैं वह "निरंतर एकीकरण" है।

यहां GIT + phpundercontrol का उपयोग करने वाले किसी व्यक्ति का एक उदाहरण है: http://maff.ailoo.net/2009/09/continuous-integration-phpundercontrol-git/

CruiseControl (जो एक CI सर्वर है), होस्टेड SVN / GIT को एक स्रोत के रूप में उपयोग कर सकता है। तो आप इसे GitHub या Beanstalk या कुछ और के साथ भी उपयोग कर सकते हैं।

फिर आप निम्न प्रकार के सॉफ़्टवेयर के साथ एकीकृत कर सकते हैं:

  • PHPUnit
  • php-codesniffer
  • phpDocumentor
  • PHP Gcov
  • PHPXref
  • Yasca
  • आदि।

आप इस होस्ट किए गए CI को भी आज़मा सकते हैं: http://www.php-ci.net/hosting/create-project

हालांकि, ध्यान रखें कि उन उपकरणों को कस्टम समर्थन की आवश्यकता है यदि आप उन्हें स्वयं एकीकृत करते हैं।

क्या आपने परियोजना प्रबंधन और पैच प्रबंधन के बारे में भी सोचा है?

आप Redmine का उपयोग प्रोजेक्ट प्रबंधन के लिए कर सकते हैं। इसमें निरंतर एकीकरण समर्थन है, लेकिन केवल ग्राहक पक्ष (सीआई सर्वर के रूप में नहीं)।

होस्ट किए गए SVN / GIT / etc का उपयोग करने का प्रयास करें। समाधान, क्योंकि वे आपके बैकअप को कवर करेंगे और अपने सर्वर को चालू रखेंगे, ताकि आप विकास पर ध्यान केंद्रित कर सकें।

हडसन सेटअप करने के तरीके पर एक ट्यूटोरियल के लिए, देखें: http://toptopic.wordpress.com/2009/02/26/php-and-hudson/


2
लिंक के लिए धन्यवाद। जिन उत्पादों से मैं परिचित हूं, जो मैं उम्मीद कर रहा हूं, वह आपके द्वारा प्रदान किए गए जैसे ट्यूटोरियल-स्टाइल वॉकथ्रू है।
पेकका

नमस्ते, 2012 के अक्टूबर के अनुसार, php-ci.net नीचे है या सेवा से पहले ही खींच लिया गया है? मैं उस पते से जुड़ नहीं सकता, न ही मैं पिछले साल की नई जानकारी पा सकता हूं।
रयान

@ रेयान, मुझे नहीं पता कि क्या ख़ुशी है। मुझे पता है, कि आप दूसरों की कोशिश कर सकते हैं। शायद आप कोशिश कर सकते हैं: CircleCI या आप इस विषय की जाँच कर सकते हैं: PHP के लिए होस्टेड कंटीन्यूअस इंटीग्रेशन?
Michiel

@ रेयान, नहीं, यह नीचे नहीं है, मैं अभी कुछ समय से इसका उपयोग कर रहा हूं। वे phptesting.org
omrakhur

6

मैं अपने मुख्य PHP प्रोजेक्ट (उनके अन्य उत्पादों जैसे कि fisheye (रिपॉजिटरी ब्राउज़िंग), jira (इशू ट्रैकर) और क्लोवर (कोड कवरेज) के साथ) के लिए एटलसियन के बांस निरंतर एकीकरण सर्वर का उपयोग करता हूं )।

यह SVN को सपोर्ट करता है और अब Git को सपोर्ट करता है और इसमें एक बेहतरीन यूजर इंटरफेस है। यह linux, windows और mac के लिए उपलब्ध है और अपने खुद के tomcat सर्वर पर स्टैंडअलोन चला सकता है जो लोगों के लिए बहुत अच्छा है (मेरे जैसे) जो अपने टूल सेटअप करने के लिए दिनों को लेना पसंद नहीं करते हैं। हालांकि यह महंगा लग सकता है, एक अकेला डेवलपर होने के नाते मैंने 10 डॉलर (सॉफ्टवेयर द्वारा 10 डॉलर) के लिए स्टार्टर किट लाइसेंस खरीदा। यह छोटी टीमों के लिए बहुत अच्छा है और यह देखने लायक है।


आप फ़िंग का समर्थन करने के लिए बांस को कैसे कॉन्फ़िगर कर सकते हैं? मैं वर्तमान में चींटी का उपयोग कर रहा हूं, लेकिन लगता है कि php का उपयोग करने के लिए फिंग अधिक उपयुक्त है। साभार
विंसेंट

5

PHPTesting PHPCI यह php में निर्मित अच्छा, निरंतर एकीकरण सर्वर है।

साथ ही, इसका स्वतंत्र और खुला स्रोत। :)

यह प्लगइन्स की संख्या है ..

PHPCI के लिए एकीकरण प्लगइन्स शामिल हैं:

  • Atoum
  • Behat
  • कैम्प फ़ायर
  • Codeception
  • संगीतकार
  • ईमेल
  • असंतोष का शब्द
  • आईआरसी
  • पीएचपी
  • एक प्रकार का वृक्ष
  • माई एसक्यूएल
  • PDepend
  • PostgreSQL
  • PHP कोड स्निफर
  • PHP कॉपी / पेस्ट डिटेक्टर
  • PHP युक्ति
  • PHP इकाई
  • शेल कमांड्स
  • टार / जिप

हालांकि मुझे PHPCI पसंद है मैं इसकी सिफारिश नहीं करता। यह अविश्वसनीय रूप से छोटी गाड़ी और गैर-विश्वसनीय है। यह दुख की बात है कि सामान्य बुनियादी कार्यक्षमता को ठीक से परीक्षण नहीं किया जा रहा है इसलिए बुनियादी चीज़ जैसे प्रोजेक्ट URL को जोड़ना बिना गड़बड़ किए मुश्किल है।
टेक

@Tek PHP के लिए आपकी सीआई रणनीति क्या है?
ओमराखुर

1
@omrakhur मैं दुर्भाग्य से PHPCI के साथ फंस गया हूँ। अन्य सभी सॉफ्टवेयर बहुत अधिक भारी है और सेट करने के लिए बहुत कुछ लेता है। सब कुछ यह पेशेवरों और विपक्ष है। आपको बस आपके साथ काम करना है।
टेक

3

मैं ज्यादातर एक sys व्यवस्थापक हूं लेकिन कभी-कभी मैं PHP को भी कोड करता हूं। एक पक्ष परियोजना के रूप में मैंने कुछ स्क्रिप्ट बनाईं जो जेनकिंस का उपयोग करके पूर्ण विकसित PHP CI वातावरण स्थापित करने के लिए सरल और दर्द रहित बनाएंगी। यह आपके लिए एक नमूना परियोजना भी चलाता है ताकि आप देख सकें कि प्रत्येक बिल्ड चरण को कैसे कॉन्फ़िगर किया जाता है।

यदि आप इसे आज़माना चाहते हैं, तो आपको एक डेबियन / उबंटू बॉक्स और शेल एक्सेस की आवश्यकता है।

http://yauh.de/articles/379/setting-up-a-ci-environment-for-php-projects-using-jenkins-ci

अपडेट मेरे उत्तर में कुछ सामग्री जोड़ने के लिए:

आप बस अंसिबल का उपयोग करके PHP के लिए जेनकिंस CI सेट कर सकते हैं। V1.4 के बाद से यह भूमिकाओं का समर्थन करता है जिसे आप उनके galaxy.ansibleworks.com सामुदायिक साइट से डाउनलोड कर सकते हैं और यह आपके लिए भारी उठाने का काम करेगा। इसे जेनकिंस-php कहा जाता है ।


3

मैं Jenkins http://jenkins-ci.org/ का उपयोग करने का सुझाव दूंगा और यह मुफ़्त है और यह खुला स्रोत है।

यह सेटअप के लिए बहुत सीधा है, कई प्लेटफार्मों पर काम करता है और तकनीकी ऋण को मापने के लिए सोनारक्यूब (+ SQUALE) जैसे अन्य निरंतर एकीकरण उपकरण के साथ अच्छी तरह से एकीकृत करता है और परीक्षण स्वचालन के लिए थ्यूसाइड्स।

मैं अत्यधिक SVN के बजाय संस्करण नियंत्रण के लिए GIT या GIT हब का उपयोग करने का सुझाव दूंगा। मेरे दृष्टिकोण से यह सिर्फ एक बेहतर संस्करण नियंत्रण प्रणाली है जो आपको बाद में अपने विकास प्रयासों को मापने में मदद करेगी।

चूंकि आप ज्यादातर PHP प्रोजेक्ट के साथ काम कर रहे हैं इसलिए कुछ अन्य उपकरण हैं जिनका आप उपयोग कर सकते हैं।

PHPUnit - इकाई परीक्षण के लिए

PHP कोडस्निफर - कोडिंग मानकों की जाँच करें

PHP निर्भर - अपने PHP कोड निर्भरता दिखाता है

XDEBUG - प्रदर्शन परीक्षण के लिए

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

गुड लक और आनंद लें!


3

मैं आपके द्वारा उपयोग किए जाने वाले कई उत्पादों, या यहां तक ​​कि उन प्रकार के उत्पादों का उपयोग नहीं करता, लेकिन मैं आपको अपना अनुभव दूंगा।

मैं अपने PROD पर्यावरण के साथ Parrallel में एक TEST वातावरण चलाता हूं। मेरा कोई स्थानीय परीक्षण नहीं है। यदि वास्तविक TEST वातावरण में साबुन लेना बहुत कठिन है, तो मैं अपनी निर्माण प्रक्रिया को ठीक करता हूं। मुझे स्थानीय रूप से परीक्षण करने की बात नहीं दिखती, क्योंकि वातावरण अलग हैं। अद्यतन: इससे पहले कि मैं कुछ भी अपलोड करने से पहले केवल स्थानीय रूप से "php -l" चलाया जाता है। बेवकूफ गलतियों को रोकता है।

निर्माण प्रक्रिया वर्तमान कार्यक्षेत्र में जो कुछ भी है, के साथ काम करती है, जिसमें बिना कोड वाला कोड शामिल है। यह हर किसी के लिए चाय नहीं है, लेकिन मैं बहुत बार टेस्ट में जा रहा हूं। PROD में जाने से पहले सब कुछ प्रतिबद्ध हो जाता है।

मेरी निर्माण प्रक्रिया का एक हिस्सा (आपके समान) दो मेटा फाइल बनाता है। एक में अंतिम (आमतौर पर) 100 परिवर्तन होते हैं और मुझे वर्तमान चेंजलीस्ट नंबर भी देता है। मुझे दिखाता है कि क्या परिवर्तन स्थापित हैं। दूसरे में CLIENTSPEC (Perforce शब्दों में) है जो मुझे दिखाता है कि इस बिल्ड में कौन सी शाखाएँ इस्तेमाल की गई थीं। साथ में ये मुझे प्रतिलिपि प्रस्तुत करने योग्य बनाता है।

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

एक अन्य मुद्दा DB परिवर्तन है। मैं DB स्कीमा की एक मास्टर स्क्रिप्ट रखता हूं, जिसे मैं हर बार स्कीमा में बदलाव के लिए अपडेट करता हूं। परिवर्तनों में से प्रत्येक भी एक परिवर्तन में जाता है। एसक्यूएल स्क्रिप्ट, जिसे निर्माण के साथ स्टेजिंग क्षेत्र में अपलोड किया जाता है। स्क्रिप्ट को स्क्रिप्ट के भाग के रूप में चलाया जाता है।


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

2

मैंने हाल ही में एक ही तरह की प्रक्रिया शुरू की है, और svn होस्टिंग के लिए बीनस्टॉक का उपयोग कर रहा हूं ।

भुगतान किए गए खातों में दो निफ्टी विशेषताएं हैं ($ 15pm पर शुरू मुझे लगता है):

  • तैनाती उपयोगकर्ता को मचान और उत्पादन सर्वर के लिए ftp लक्ष्य बनाने की अनुमति देता है, जिसे एक बटन के क्लिक पर तैनात किया जा सकता है (एक संशोधन और शाखा को निर्दिष्ट करते हुए)
  • webhooks उपयोगकर्ता को एक ऐसा url सेट करने की अनुमति देता है जिसे संशोधन नंबर, विवरण और उपयोगकर्ता जैसी चीज़ों के बीच से गुजरते हुए प्रत्येक कमिट / परिनियोजित किया जाता है। इसका उपयोग डॉक्स को अपडेट करने, यूनिट टेस्ट चलाने और चैंज को अपडेट करने के लिए किया जा सकता है।

मुझे यकीन है कि इन दो विशेषताओं के साथ अन्य होस्ट या स्व-होस्टिंग svn सर्वर हैं, लेकिन बीनस्टॉक वह है जिसका मुझे अनुभव है और यह बहुत अच्छा काम कर रहा है

वहाँ भी एक एपीआई है, जो मुझे लगता है कि आपकी प्रक्रिया के आगे तैनाती को एकीकृत करने के लिए इस्तेमाल किया जा सकता है।


चीयर्स @ ददम। मैं इसके लिए होस्ट की गई सेवाओं के लिए इतना नहीं देख रहा हूं, क्योंकि मुझे डर है कि वे हमेशा मेरी ज़रूरत के लिए बहुत सीमित होंगे। लेकिन आप जो कहते हैं वह दिलचस्प लगता है, और एपीआई बाकी के लिए एक कनेक्टिंग पॉइंट हो सकता है। मैं इस पर एक नज़र डालूंगा।
पेका

कोई चिंता नहीं, सोचा था कि आप ऐसा कह सकते हैं। यह मुझे अभी के लिए सूट करता है, क्योंकि मुझे अपना सिर गोल नहीं मिला है (और मैं वन-मैन टीम हूं), साथ ही अगर आप हिलना चाहते हैं तो वे एक पूर्ण रेपो एक्सपोर्ट की पेशकश करते हैं।
एडम हॉपकिंसन

2

Fazend.com पर विचार करें , एक मुफ्त होस्ट किया गया सीआई प्लेटफॉर्म, जो कॉन्फ़िगरेशन और इंस्टॉलेशन प्रक्रियाओं को स्वचालित करता है। आपको संस्करण नियंत्रण, बग ट्रैकिंग, CI सर्वर, परीक्षण वातावरण, आदि की आवश्यकता नहीं है। सब कुछ ऑन-डिमांड किया जाता है।


मम्म, यह बहुत दिलचस्प लग रहा है! लेकिन वे कैसे बचते हैं? सब कुछ मुफ्त के रूप में देख रहे हैं? वे सर्वर और E3 फीस के लिए भुगतान कैसे करते हैं?
पेका

@Pekka यह परियोजना एक सॉफ्टवेयर डेवलपमेंट कंपनी द्वारा प्रायोजित है, इसीलिए यह सेवा नि: शुल्क है
yegor256
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.