2009-08-25 8 views
9

में निर्माण के लिए पर्यावरण परिवर्तक सेट करें मैं हडसन में निरंतर एकीकरण के तहत एक maven2 प्रोजेक्ट डालने की कोशिश कर रहा हूं। प्रोजेक्ट कुछ एकीकरण परीक्षण के लिए सेलेनियम का उपयोग करता है। हडसन एक हेडलेस लिनक्स पर चल रहा है। मैं सेलेनियम के लिए एक्स सर्वर सत्र शुरू करने के लिए xvfb का उपयोग कर रहा हूं।हडसन

परीक्षण चलाने के लिए, मुझे DISPLAY नामक एक पर्यावरण चर निर्यात करने की आवश्यकता है। उदा।

export DISPLAY=:99 

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

क्या हडसन से पर्यावरण चर पंजीकृत करने का कोई तरीका है।

उत्तर

4

हडसन में एक नई सुविधा है जो आपको parameters for builds निर्दिष्ट करने की अनुमति देती है। ऐसा लगता है कि यह वही करता है जो आप चाहते हैं।

हालांकि ध्यान दें कि:

warning http://wiki.hudson-ci.org/images/icons/emoticons/information.gif यह अभी भी एक बहुत ही कम सुविधा है, इसलिए प्रतिक्रिया

...

पैरामीटर [एस] पर्यावरण मापदंडों रूप में उपलब्ध हैं की सराहना की। तो उदा। एक खोल ($ FOO,% FOO%) या चींटी ($ {env.FOO}) इन मानों तक पहुंच सकते हैं।

+1

मैं आश्वस्त नहीं कर रहा हूँ यह वास्तव में सवाल पूछा गया था कि उत्तर देता है - मैं कैसे में वातावरण चर सेट करते हैं मेवेन के रूप में एक ही खोल कहा जाता है? ये पैरामीटर काफी उपयोगी हैं, लेकिन यह काफी नहीं है कि उपयोगकर्ता क्या पूछ रहा था - और यह आपको वर्तमान में वहां मौजूद पर्यावरण चर को संपादित करने की अनुमति नहीं देता है यानी आप इसे कॉल करने के लिए नहीं प्राप्त कर सकते हैं। उदाहरण के लिए, निर्यात PATH =/usr/bin/foo: $ PATH काम नहीं करेगा, क्योंकि यह $ PATH – Spedge

+1

@Spge को पहचान नहीं रहा है, आप पर्यावरण चर के पढ़ने और सेटिंग को स्वीकार कर रहे हैं। सवाल पूछा गया कि एक चर सेट करने के लिए कैसे कहा गया है और वर्णित तंत्र बिल्कुल ठीक है। आपके उदाहरण में आप एक सेट और एक पठन दोनों कर रहे हैं, जिसे नहीं पूछा गया था। –

+0

@ रिच विक्रेता - क्षमाप्रार्थी महोदय। मैंने अब इस पर कुछ काम किया है, और नीचे दिए गए जवाब में विस्तारित होगा (क्योंकि टिप्पणी में पर्याप्त जगह नहीं है)। – Spedge

3

हडसन की नोड प्रॉपर्टी यहां एक अच्छी नौकरी करेगी। लेकिन यदि आप स्क्रीन नंबर असाइन करने का एक और अधिक स्वचालित तरीका ढूंढ रहे हैं, तो आपको थोड़ा और काम करने की आवश्यकता होगी, शायद port-allocator plugin में टाइप करना, या एक नया BuildWrapper प्लगइन लिखना जो स्वचालित रूप से xvfb शुरू करता है, और स्क्रीन सेट करता है निर्माण की ओर से पर्यावरण परिवर्तनीय।

यदि आप परीक्षण के लिए एक अलग एक्स सर्वर पर स्विच करने के इच्छुक हैं, तो आप हडसन के लिए Xvnc plugin आज़मा सकते हैं। यह स्वचालित रूप से vncserver शुरू करेगा, और स्क्रीन पर्यावरण चर सेट भी सेट करेगा। परीक्षण समाप्त होने पर स्क्रीनशॉट लेने की क्षमता भी होती है, और यह दिखाती है कि नौकरी के हडसन पृष्ठ में।

+0

आप * PATH' जैसे पर्यावरण चर में * जोड़ें (सेट नहीं) कैसे करते हैं? –

+0

@ श्रीधर मैं सुझाव देता हूं कि इसके लिए एक बिल्कुल नया प्रश्न शुरू करें। –

+0

@ श्रीधर: यदि नया चर मूल्य वर्तमान बिल्ड चरण में जीवित रहना चाहिए तो ऐसा करने का कोई तरीका नहीं है। –

0

स्वीकृत उत्तर की मेरी प्रतिक्रिया के अनुसार, यहां मेरे निष्कर्ष हैं। हडसन में Parametrization सुविधा का उपयोग करते

खबरदार संयुक्त राष्ट्र के initialised चर

, आप एक स्ट्रिंग के अंत करने के लिए पर्यावरण चर जोड़ सकते हैं - बशर्ते कि वे पहली जगह में कुछ होते हैं।

उदाहरण के लिए, वातावरण चर $ FOO खाली है, और आप एक स्ट्रिंग पैरामीटर में निम्न पंक्ति का उपयोग करने के ...

/usr/bin/ladeda/:$F00 

तो वातावरण चर पढ़ा जाएगा/usr/bin थे/ladeda /: $ F00।

हालांकि, अगर मैंने किया था

export F00=/usr/bin/fiddledede 

तो निर्यात चर होगा ....

/usr/bin/ladeda/:/usr/bin/fiddledede 

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

10

fyi, मैं आज हडसन के लिए the setenv plugin जारी कर रहा हूं (माना जाता है कि java.net मेरे लिए ऐसा करने के लिए पर्याप्त रूप से ठीक हो जाता है!) - यह पैरामीटरयुक्त कार्यक्षमता के समान व्यवहार करता है, लेकिन एक सरल यूआई के साथ (केवल इनपुट के लिए एक textarea - कुंजी/मूल्य जोड़े को न्यूलाइन द्वारा अलग किया जाता है) और बिल्ड-टाइम पर पैरामीटर के लिए मान प्रदान करने की आवश्यकता के बिना।

1

मुझे डिस्प्ले सेट करने से अधिक विश्वसनीय होने के लिए xvfb-run का उपयोग करके सेलेनियम चल रहा है, इसलिए यह आपके लिए काम कर सकता है। तो:

xvfb-run java -jar selenium-server.jar 
1

क्या आपने सेलेनियम मेवेन प्लगइन का उपयोग करने की कोशिश की है?

प्लगइन को Xvfb शुरू करने के लिए कॉन्फ़िगर किया जा सकता है, परीक्षण चलाएं और फिर इसे रोक दें।

इस pom.xml विन्यास का उपयोग कर:

<plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>selenium-maven-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>xvfb</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>xvfb</goal> 
       </goals> 
      </execution> 

      <execution> 
       <id>selenium</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>start-server</goal> 
       </goals> 
       <configuration> 
        <background>true</background> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

विवरण यहां हैं: http://mojo.codehaus.org/selenium-maven-plugin/examples/headless-with-xvfb.html