Drush और Phing बेमानी हैं?


24

मैंने अपने देव सर्वर पर जेनकिंससीआई स्थापित किया है ताकि हमारे देव निर्माण और परीक्षण प्रक्रिया को स्वचालित करना शुरू किया जा सके। मैं Git Plugin और कुछ Drush कमांड के साथ Jenkins का उपयोग शेल स्क्रिप्ट के माध्यम से कर रहा हूं।

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

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

तो मेरा प्रश्न उन लोगों के लिए है जो ड्रश और जेनकिंस के साथ फ़िंग का उपयोग करते हैं: यह कैसे है कि ड्रश / ड्रश-मेक और फ़िश अलग हैं? आपने अपनी प्रक्रिया में फ़िंग का उपयोग शुरू करने का निर्णय क्यों लिया?

धन्यवाद

जवाबों:


15

इसका उत्तर यह है कि वे निश्चित रूप से निरर्थक नहीं हैं।

यह सच है कि व्यक्ति बैश स्क्रिप्ट का उपयोग करके उसी अंतिम परिणाम को पूरा कर सकता है जिसमें ड्रश कमांड (कम से कम भवन भाग) शामिल है। लेकिन, अगर हम जो करना चाह रहे हैं वह हमारी प्रक्रिया को जेनकिंससीआई जैसे सीआई ढांचे में एकीकृत करना है, तो फिंग (चींटी या कैपिस्ट्रानो जैसी चीजों को यहां प्रतिस्थापित किया जा सकता है) का उपयोग करने का तरीका है।

फिंग के साथ हम निर्माण प्रक्रिया को अलग-अलग खंडों में तोड़ सकते हैं जो जेनकिंस को एक बुद्धिमान तरीके से वापस रिपोर्ट कर सकते हैं।

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

drush --quiet --yes @staging en node shouldfail

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

<project name="staging" default="enable modules" description="Jenkins Staging Build">

    <target name="enable modules">
      <exec  command="drush --quiet --yes @staging en node shouldfail" error='error' checkreturn="true">
      </exec>
      <loadfile  property="en.error" file="error" />
      <if>
        <contains string="${en.error}" substring="warning" />
        <then>
          <property name="en.fail" value="Could not enable all modules" />
        </then>
      </if>
      <fail if="en.fail" message="${en.fail}" />
    </target>

</project>

BTW चींटी और फिंग लगभग समान हैं। Phing का उपयोग करने में PHP डेवलपर्स के लिए लाभ यह है कि वे अधिक आराम से फ़िंग का विस्तार कर सकते हैं।

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

खैर, अपने सवाल का जवाब देने के लिए मैंने फिंग का पता लगाने के लिए समय का निवेश किया। यह वास्तव में बहुत सहज है और यह पता लगाने में बहुत लंबा समय नहीं लगता है।


2

अब Phing के लिए एक Drush कार्य उपलब्ध है :

अमल का उपयोग करने के बजाय आप इस तरह से Drush comands को शामिल कर सकते हैं ...

  <drush command="site-install" assume="yes"">
        <option name="locale">uk</option>
        <option name="site-name" value="${sitename}" />
        <param>expert</param>
  </drush> 

मैं थोड़ी देर के लिए ड्रूस्कट का इस्तेमाल करता था और मैं ड्रश चेतावनी के साथ सफलतापूर्वक बातचीत नहीं कर सकता था। मैंने इसे समाप्त कर दिया क्योंकि उस कारण और इस तथ्य के कारण कि मैंने इसे अन्य मामलों में सीमित पाया।
DKinzer

अपने मुद्दे कतार ( drupal.org/project/issues/phingdrushtask ) पर समर्थन या सुविधा के अनुरोध में आपके पास उन मुद्दों / सीमाओं को समझाना अच्छा होगा, जो ड्रश कार्य के साथ थे । दूसरों को पता लगाने के लिए और शायद जवाब देने में योगदान दें।
पियरे बाइल

2

कई लिपियों के निष्पादन और उनके परिणामों को नियंत्रित करने के लिए फिंग स्क्रिप्ट्स शेल स्क्रिप्ट्स के लिए प्रतिस्थापन हैं। Drush एक Drupal साइट या Drupal से संबंधित बातचीत करने के लिए आदेशों के लिए एक CLI इंटरफ़ेस है। वे एक दूसरे के पूरक हैं।


1

आपका प्रश्न: क्या फिंग और ड्रश ओवरलैप है?

TLDR; संस्करण: Sorta। लेकिन ज्यादातर नहीं।

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

फिंग क्या है?

फ़िंग अनिवार्य रूप से पायलट है जो कमांड निष्पादित करता है। यदि आप चींटी से परिचित हैं, तो फ़िंग वास्तव में चींटी (यह जावा आधारित चचेरा भाई) का एक करीबी बंदरगाह है। PHP में Phing लिखा होता है।

आप उन कार्यों के आधार पर कार्यों को स्वचालित करने और परिणामों को रिपोर्ट करने के लिए फ़िंग का उपयोग कर सकते हैं। दूसरी ओर, Drush, केवल कार्य करता है। यह आउटपुट के परिणामों का मूल्यांकन करने में असमर्थ है।

फ़िंग / ड्रश के लिए उदाहरण उपयोग मामला:

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

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

यह सब कैसे काम करता है?

Phing एक xml द्वारा संचालित है। यह एक build.xml फ़ाइल का उपभोग करता है और गुण (कभी-कभी लक्ष्य कहा जाता है) में लेता है और सरल कमांड निष्पादित करता है।

इस पर अधिक:

मैं आपको फिंग परियोजना के नेताओं द्वारा इस स्लाइडशेयर की समीक्षा करने की अत्यधिक सलाह देता हूं:

http://www.slideshare.net/michieltcs/building-and-deploying-php-applications-with-phing

यह आपको एक उच्च स्तर और फ़िंग के कुछ ठोस उपयोग (प्लस कोड) देगा। यह किसी भी तरह से ड्रुपल से संबंधित नहीं है, लेकिन यह आपको एक बेहतर विचार देगा कि यह कैसे काम करता है।

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