2012-02-03 23 views
6

पर चलते समय पर्यावरण चर को ओवरराइड करें मैं PHPUnit और जेनकींस का उपयोग कर एक ज़ेंड फ्रेमवर्क एप्लिकेशन का परीक्षण कर रहा हूं। मैं APPLICATION_ENV वातावरण चर जो का उपयोग कर का उपयोग कर सकते है ओवरराइड करने के लिए की जरूरत है PHP के getenv PHPUnit bootstrap.php फ़ाइल में:जेनकींस

<?php 

// Define application environment 
defined('APPLICATION_ENV') 
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'testing')); 

... use APPLICATION_ENV to pick database, configuration, etc. ... 

मैं दो वातावरण है: testing और testing-ci (जेनकींस मशीन के लिए) (स्थानीय मशीनों के लिए)। जेनकिन्स में चलने पर मैं वैरिएबल को testing-ci पर कैसे सेट कर सकता हूं? क्या एंटी या फ़िंग के लिए build.xml में इसे सेट करने का कोई तरीका है?

उत्तर

7

चरण 1: जेनकींस में पर्यावरण चर जोड़ें।

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

ये अपने चींटी निर्माण स्क्रिप्ट के जेनकींस द्वारा पारित हो जाएगा।

चरण 2: उन्हें चींटी में लोड करें।

अपनी चींटी build.xml स्क्रिप्ट के शीर्ष के पास, env उपसर्ग के साथ सभी पर्यावरण चर लोड करें ताकि वे अन्य गुणों में हस्तक्षेप न करें।

<property environment="env"/> 

अब सभी आयातित चर env उपसर्ग का उपयोग करके उपलब्ध हो जाएगा, उदा ${env.HOME}

चरण 3: उन्हें PHPUnit पर पास करें।

मान लें कि आप PHPUnit चलाने के लिए <exec> कार्य का उपयोग कर रहे हैं, तो आप <env> बाल तत्व का उपयोग करके प्रत्येक आवश्यक चर को पार कर सकते हैं।

<exec taskname="test" executable="phpunit"> 
    <env key="APPLICATION_ENV" value="${env.APPLICATION_ENV}"/> 
    ... 
</exec> 

नोट: आप अगर चींटी मार डाला बच्चे प्रक्रियाओं के साथ वातावरण चर पारित करेंगे देखने के लिए सिर्फ पहला कदम की कोशिश करना चाहते हो सकता है, लेकिन मुझे लगता है कि अन्य दो कदम है क्या यह भी स्पष्ट कर दिया के लिए अच्छे हैं अन्य डेवलपर्स के लिए आवश्यक है।

+0

ठीक है यह अच्छा होगा, धन्यवाद – dextervip

+0

मैंने कोड को जोड़ा जो मैं अपने सेटअप में उपयोग कर रहा हूं। –

+0

यही वह है जिसे मैं ढूंढ रहा था, यह ठीक काम करता है। धन्यवाद। – dextervip

0

ठीक है।

यहाँ आप क्या करना है ...

पहले, bootstrap.php नामक एक नई फ़ाइल बनाएँ।

if (!empty($argv) && 
    ($key = array_search('--environment', $argv)) !== FALSE) 
{ 
    $env = $argv[$key + 1]; 
    putenv('APPLICATION_ENV=' . $env); 
} 

लोड bootstrap.php अपने testsuite या (और भी बेहतर) phpunit.xml में:

इसके बाद, boostrap.php में, निम्नलिखित कोड डाल दिया।

अंत में, अपने सीआई निर्माण config के माध्यम से, या कंसोल के माध्यम से या जहाँ भी, phpunit UnitTest.php --environment dev की तरह अपने इकाई परीक्षण निष्पादित।

आप जाने के लिए अच्छे हैं।

+0

क्षमा करें मुझे नहीं पता कि आप मुझे समझ चुके हैं लेकिन मेरे पास पहले से बूटस्ट्रैप.एफ़पी और phpunit.xml है, आजकल यह मेरे मशीन डेटाबेस पर स्थानीय रूप से काम करता है लेकिन जब जेनकींस जाता है तो यह एक और डेटाबेस पासवर्ड होता है। मुझे जेनकिंस कॉन्फ़िगरेशन में या build.xml में env चर बदलने के लिए एक समाधान की आवश्यकता है ताकि मेरा स्थानीय परीक्षण तोड़ न सके और जेनकिन्स पर काम करेगा। – dextervip

+0

ओह मुझे खेद है। मैं अब एक अद्यतन समाधान के साथ अपनी पोस्ट संपादित कर रहा हूँ। –

+0

यह एक समाधान होगा हालांकि मेरे मामले में मैं xml (phpunit --configuration ./tests/phpunit.xml) द्वारा कॉन्फ़िगर किया गया एक सूट परीक्षण केस चला रहा हूं। PHPUnit प्राप्त नहीं करता है - पर्यावरण लेकिन फिर भी धन्यवाद :) – dextervip