2012-10-23 23 views
14

का उपयोग कर सतत एकीकरण मेरे पास एक PHP प्रोजेक्ट है जिसमें मैं संगीतकार के माध्यम से संकुल लोड करता हूं। मैं एक समर्पित सीआई सर्वर पर जेनकींस का उपयोग करके निरंतर एकीकरण भी चलाता हूं। एक बार हर घंटे, जेनकिंस परिवर्तन के लिए मेरे भंडार से पूछताछ करता है, और यदि मौजूद है, तो परीक्षण रन निष्पादित करता है।संगीतकार

टेस्ट्रून का पहला चरण भंडार का ताज़ा चेकआउट कर रहा है, और फ़िंग का उपयोग करके एप्लिकेशन का निर्माण कर रहा है। निर्माण के चरणों में से एक प्रदर्शन कर रहा है एक

composer install 

के बाद से जेनकींस हमेशा एक ताजा चेकआउट के साथ काम करता है, संगीतकार हमेशा सभी संकुल हर परीक्षण चलाने पर, लायेगा भले ही संकुल में से कोई भी पिछले रन के बाद से बदल दिया गया है । इस नुकसान के एक जोड़े हैं:

  • यह एक परीक्षण रन पूरा करने के लिए एक relativally लंबा समय लगता है (संगीतकार उदाहरण Zend फ्रेमवर्क, जो बल्कि बड़ी है
  • यह packagist सर्वर पर अनावश्यक दबाव के लिए लाने के लिए की जरूरत है, नए संकुल हर घंटे
  • हैं, तो किसी कारण से, संगीतकार स्थापित विफल रहता है, तो अपने परीक्षण रन करता है।

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

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

उत्तर

4

एक चीज जो आप कर सकते हैं वो विक्रेताओं को जेनकींस में प्रोजेक्ट के वर्कस्पेस के बाहर किसी स्थान पर स्टोर करना है ताकि यह बिल्ड के बीच बना रहता है। आपको अपने आवेदन को बदलने की ज़रूरत नहीं है। बस बिल्ड स्क्रिप्ट को अपडेट करें ताकि यह विक्रेता स्थान के लिए एक प्रतीकात्मक लिंक बनाता है।

मैं रिलीज के बीच विक्रेताओं को रखने के लिए तैनाती और it uses this approach के लिए कैपिफोनी का उपयोग करता हूं।

+0

ठीक है, कि जिस तरह से मैं केवल यह सुनिश्चित करें कि बनाने के लिए है, निष्पादित निर्माण प्रक्रिया में, फ़ाइल उस स्थान पर कॉपी की गई है, और नए संकुल की जांच के लिए एक संगीतकार स्थापित करें। और मैं वास्तव में बिल्ड फ़ाइल में केवल पर्यावरण स्विच के साथ इसे खींचने में सक्षम हो सकता हूं –

5

इसे गति देने का एक तरीका composer install --prefer-dist का उपयोग करना है जो केवल देव पैकेज के लिए ज़िप डाउनलोड करता है। यह अद्वितीय निर्माण के लिए पसंद किया जाता है क्योंकि यह परियोजना के पूरे इतिहास को छोड़ देता है।

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

0

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

दूसरी बात यह है कि: आप भंडार का ताजा चेकआउट करके परीक्षण क्यों कर रहे हैं? जेनकिन्स में वर्कस्पेस में अपने कोड की प्रतिलिपि रखना पूरी तरह से संभव है, और केवल यह सुनिश्चित करें कि आप कैश, लॉग और अन्य कलाकृतियों को चलाने वाले प्रत्येक परीक्षण पर मिटा दें। यह न केवल संगीतकार स्थापित करेगा, बल्कि गिट खींचता है, खासकर बड़े रिपो के लिए!

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

0

zf2 स्थापित करने के चरण अनुमतियों के कारण यदि उपरोक्त विफल रहता है, sudo के साथ फिर से mv लाइन चलाएँ: जेनकींस mkdir/path/to/अपने/परियोजना 1. पर परियोजना संगीतकार स्थापित

curl -sS https://getcomposer.org/installer | php 
mv composer.phar /usr/local/bin/composer 

नोट। एक त्वरित कॉपी-पेस्ट संस्करण sudo सहित:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer 
  1. सभी pacakages आप

    आवश्यकता जोड़ने परियोजना के रूट निर्देशिका में एक composer.json फ़ाइल बनाने

    { "नाम": "amarjitsingh", "विवरण": "amarjitsingh", "लाइसेंस": "बीएसडी-3-खण्ड", "कीवर्ड" [ "रूपरेखा", "zf2" ] , "होमपेज": "http://domain.com/", "आवश्यकता": { "php": "> = 5.5", "ज़ेंडफ्रेमवर्क/ज़ेंडफ्रेमवर्क": "~ 2.5", "phpoffice/phpword": "dev-master" , "सिद्धांत/सिद्धांत-ओआरएम-मॉड्यूल": "0.7.0", "कल्पना/कल्पना करें": "0.5। *", "zf-commons/zfc-user": "dev-master" }, "autoload": { "psr.0": "/ मॉड्यूल" }

    }

  2. रन 'composer install' इन पैकेज इंस्टॉल करने।

  3. अगर आप ubuntu उपयोग कर रहे हैं आप folowing आदेशों

    sudo apt-get अद्यतन sudo apt-get स्थापित Git

सेट का उपयोग करके GIT सेट कर सकते हैं अपने मशीन पर Git की स्थापना ऊपर Git

git config --global user.name "Your Name" 
git config --global user.email "[email protected]" 

जांच config सूची

git config --list 

cd /path/to/your/project 

तो एक बार आप सेटअप GIT है। एक बार आपके पास पैक स्थापित होने के बाद dcument root में '.gitignore' फ़ाइल बनाएं और इसके अंदर 'vendor' जोड़ें।

git init 
git remote add origin https://[email protected]/username/zf2ci.git 

, जोड़ें के लिए प्रतिबद्ध, और पुश फ़ाइलों

git add . 
git commit -m 'Initial commit with contributors' 
git push -u origin master 
git pull 

बादल का उपयोग कर आप एडब्ल्यूएस उपयोग कर सकते हैं कमान नीचे लागू होते हैं। मैं डिजिटल सागर

1 का उपयोग कर रहा अपनी इच्छानुसार एक droplet 2.name इसे बनाने, mycase में यह zf2ci 3. चुनें एक पैकेज 4. ओएस चुनें मेरी cas EIS Ubuntu 14.04 5. अनुप्रयोगों टैब में है एक बार जब आप इसके साथ काम करते हैं तो आपको LAMP 6 चुनें, आपको आईपी पता, उपयोगकर्ता नाम रूट और पासवर्ड मिलेगा। 7. लॉगिन पोटीन 8. उपयोगकर्ता का उपयोग करके आईपी root 9. पासवर्ड pass 10 एक बार आप इसे में हो तो यह आपको करने का संकेत देगा पासवर्ड 11. गोटो वेब जड़ जैसे बदलने के लिए /var/www/html 12. स्थापित GIT , अनुमतियों के कारण यदि उपरोक्त में विफल रहता है sudo के साथ फिर से mv लाइन चलाएँ: 13. apt-get install git 14. क्लोन रेपो 15. git clone https://[email protected]/username/zf2ci.git 16. इस मशीन पर संगीतकार स्थापित

curl -sS https://getcomposer.org/installer | php 
mv composer.phar /usr/local/bin/composer 

नोट। एक त्वरित कॉपी-पेस्ट sudo सहित संस्करण:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer 
  1. गोटो एप्लिकेशन पथ /var/ww/html/zf2ci
  2. रन 'composer install --no-dev' हम यह कोई देव विकल्प becuasae हम केवल अच्छी तरह से स्थापित के साथ स्थापित कर रहे हैं एप्लिकेशन सर्वर पर परीक्षण कोड

चरण 3

एक जेनकींस सर्वर 1. जेनकींसके लिए एक और छोटी बूंद की स्थापना बनाएं2. छवि ubuntu 3.Install लैंप इससे पहले कि हम जेनकींस स्थापित कर सकते हैं Jenkns

स्थापित जेनकींस स्थापित कर रहा है, हम उपयुक्त करने के लिए महत्वपूर्ण है और स्रोत सूची में जोड़ने के लिए। यह 2 चरणों में किया जाता है, पहले हम कुंजी जोड़ देंगे।

1,1

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add - 

दूसरे, हम जेनकींस के लिए एक स्रोतों की सूची में पैदा हो जाएगी।

1,2

echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list 

1,3 अब, हम केवल के उपयुक्त कैश अद्यतन करने के लिए इससे पहले कि हम जेनकींस स्थापित कर सकते हैं।

apt-get update 

1,4 के रूप में कैश अद्यतन किया गया है हम जेनकींस स्थापित करने आगे बढ़ सकते हैं। ध्यान दें कि जेनकिन्स में निर्भरता का एक बड़ा समूह है, इसलिए उन्हें सभी को स्थापित करने में कुछ क्षण लग सकते हैं।

apt-get install jenkins 

1।5 जेनकींस सर्वर पर पोर्ट 8080 जैसे http://127.0.0.1:8080

1,6 के साथ आईपी Git खोलने स्थापित

sudo apt-get update 
sudo apt-get install git 

1,7 संगीतकार जेनकींस के लिए

curl -sS https://getcomposer.org/installer | php 
mv composer.phar /usr/local/bin/composer 

1,8 सक्षम उपयोगकर्ता प्रमाणीकरण

1,9 enable bitbucket plugin स्थापित 1.9.1 Manage Jenkins->Manage Plugins->Bitbucket Plugin->download और इंस्टॉल करें 1.9.2 नौकरी बनाएँ नौकरी-> प्रोजेक्ट नाम (उदाहरण के लिए। zf2ci) -> स्रोत कोड प्रबंधन (गिट) एसएसआर यूआरएल ([email protected]:username/zf2ci.git) प्रदान करता है -> शाखाएं (*/मास्टर) बनाने के लिए शाखाएं यह शाखा है जहां हर बार जब कोई उपयोगकर्ता मास्टर शाखा के साथ कोड करता है और विलय करता है- जेनकींस

1.9.3 बिल्ड ट्रिगर विकल्प (निर्माण जब एक chnage धकेल दिया जाता है) इस wok का चयन जब हम थोड़ा बाल्टी पर एक पोस्ट हुक

1.9.4 बनाएँ-> निष्पादित खोल कर

composer install 
./vendor/bin/phpunit ./tests 

हमारे परीक्षणों बैठता intests dir

1.9.5 पोटीन के माध्यम से जेनकींस Serevr करने के लिए एक ssh key pair

लॉगिन सेट

su jenkins 
    cd 
    ls -la(check what is in the jenkins home directory) 
    ssh-kegen -t rsa (dsa by default but choose rsa key ,it is faster) 
    press enter(on path) 
    press enter(leave the pass phrase empty , the whole point here is to avoid passwords in the automated jobs) 
    pres enter 



cd .ssh 

ls -la (आप id_rsa.pub मिलेगा) वहाँ फ़ाइल

cat id_rsa.pub 

(सभी का चयन करें और फ़ाइल की सामग्री कॉपी करें)

1.9.6 गोटो रेपो zf2ci गोटो सेटिंग्स क्लिक तैनाती कुंजी> कुंजी ऐड लेबल (जेनकींस) जोड़ने कुंजी * (id_rsa.pub की सामग्री पेस्ट) फ़ाइल को यहां बचाने के लिए स्विच bitbucket रेपो

Settings-> 
Integrations-> 
Hooks-> 
POST(search for POST Hook)-> 
Add the url /IP of the Jenkins Server) (`172.62.235.100:8080/bitbucket-hook/`) 
(the body of the post contanis information about the repository, branch, list of recent commits, user) 

1.9.8के लिए महत्वपूर्ण

summary 
`zf2ci->settings->deployment keys->add key->type` label and paste id_rsa.pub key->save 

1.9.7 रजिस्टर पोस्ट हुकजेनकींस सर्वर जेनकींस 1.9 पर

su jenkinks 
    cd 
    cd .ssh 
    git ls-remote -h ssh://[email protected]:username/zf2ci.git HEAD 

1.9.9 save परियोजना के लिए प्रवेश।10 में composer.lock निम्न आदेश जोड़ने Shell-> आदेश [rsync -y -vrzhe "ssh -o StrictMostKeyChecking=no" --exclude vendor/ . [email protected]:/var/www/html/zf2ci (एप्लिकेशन सर्वर)]

ssh [email protected]<<EOF 
    cd /var/www/html/zf2ci 
    composer install --no-dev 
    EOF 
संबंधित मुद्दे