2012-05-23 10 views
10

मैं जेनकींस को निम्नलिखित कैसे कर सकता हूं?जेनकींस + विंडोज + सीएमके + एकाधिक निर्माण प्रकार (डीबग, रिलीज)

एसवीएन से चेकआउट ट्रंक/फिर कॉन्फ़िगरेशन के लिए डुप्लिकेट नौकरियों के बिना, सीएमकेक का उपयोग करके कॉन्फ़िगरेशन डीबग और रिलीज बनाएं।

उत्तर

1

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

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

यदि आप प्रत्येक निर्माण के लिए एक ही स्रोत निर्देशिका का उपयोग करना चाहते हैं, तो आपको सिंक्रनाइज़ेशन के बारे में चिंता करनी होगी: एक समय में केवल एक ही निर्माण। जहां तक ​​मुझे पता है, जेनकींस में सिंक्रनाइज़ेशन का कोई अंतर्निहित साधन नहीं है। एकमात्र तरीका केवल एक निष्पादक का उपयोग करना है। फिर भी आप निष्पादक द्वारा अपना अगला काम चुनने के तरीके को नियंत्रित नहीं कर सकते हैं।

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

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

+0

आप "जेनकिंस बिल्ड अवरोधक] (https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin) का उपयोग कर सकते हैं -" बिल्ड "के दौरान" एसवीएन अपडेट "-job को अवरुद्ध करने के लिए प्लगइन - नौकरी चल रही है –

8

Jenkins Matrix job का उपयोग करें। अक्षरों में से एक को build_mode मान डीबग और रिलीज के साथ परिभाषित करें। फिर आप सीएमके चलाते हैं जो संकलन उपकरण के लिए कॉन्फ़िगरेशन बनाएगा जो आप उपयोग करेंगे (एक्सकोड, जीसीसी, विजुअलस्टूडियो, आदि)। इसके बाद आप build_mode का उपयोग कर सकते हैं जैसे कि यह एक पर्यावरण चर था और वास्तविक संकलन करने वाले चरणों को बनाने के लिए इसे पास कर सकता है।

+0

आपके उत्तर के लिए धन्यवाद। मैंने उतना ही सोचा, लेकिन अभी भी मुझे जानकारी देने के लिए थोड़ी देर लग गई। –

+1

अगर उत्तर वास्तव में सहायक था तो कृपया [स्वीकार करने] पर विचार करें (http://meta.stackexchange.com/a/5235/177981) या [upvoting] (http://meta.stackexchange.com/a/130054/177981) यह। –

+0

यह काम cmakeplugin के साथ? मैंने "अन्य बिल्ड प्रकार" में $ build_type डाला लेकिन यह इसका विस्तार नहीं करता है। – shenshei

9

मुझे यह पता लगाने में थोड़ी देर लग गई। यहां बताया गया है कि मैं इसे कैसे करने में कामयाब रहा।

  1. एक निःशुल्क शैली की नौकरी "चेकआउट" बनाएं। यह काम उन सभी चीजों को करने जा रहा है जो कॉन्फ़िगरेशन प्रकार (डीबग/रिलीज़) पर निर्भर नहीं हैं।
  2. "स्रोत कोड प्रबंधन" के तहत उपवर्तन
  3. रिपोजिटरी यूआरएल भरें चुनें। संभवतः इसे/ट्रंक करने के लिए एक अच्छा विचार है।
  4. स्थानीय मॉड्यूल डीआईआर को "।" पर सेट करें। (कोई उद्धरण नहीं)
  5. चेक-आउट रणनीति "अनुकरण स्वच्छ" अच्छी तरह से
  6. ट्रिगर मतदान एससीएम बनाएं, प्रत्येक 5 मिनट की जांच के लिए "5 * * * *" की अनुसूची सेट करें।
  7. अब उन्नत प्रोजेक्ट विकल्प के तहत 'कस्टम वर्कस्पेस का उपयोग करें' चेक करें और डीआईआर को उदा। "C:/src"। हम नहीं चाहते हैं कि जेनकिन्स अपने आंतरिक कार्यक्षेत्र का उपयोग करें, क्योंकि हम अन्य नौकरियों को स्रोत तक पहुंचने में सक्षम होना चाहते हैं।
  8. बिल्ड के तहत निम्न विंडोज बैच कमांड जोड़ें, जिसका उपयोग बिल्ड डीआईआर को साफ करने के लिए किया जाता है। किसी कारण से, सीएमके ऐसा करने का कोई तरीका नहीं प्रदान करता है।

    cd c:\ 
    rmdir /S /Q build 
    mkdir build 
    cd build 
    
    cmake --version 
    rem optionally: svn info c:\src 
    cmake -G "Visual Studio 10" c:\src 
    
  9. दूसरी नौकरी बनाएँ "बिल्ड", इस बार यह एक "बहु विन्यास" काम करते हैं। यह काम प्रत्येक कॉन्फ़िगरेशन (डीबग/रिलीज) के लिए चलने जा रहा है।

  10. पहले, सेट बिल्ड विन्यास मैट्रिक्स के तहत के बाद काम "चेकआउट" के निर्माण के लिए ट्रिगर
  11. अब मूल्यों "डीबग रिलीज" (सफेद स्थान को = विभाजक) के साथ एक धुरी "विन्यास" जोड़ें। दुर्भाग्यवश, जेनकींस के लिए सीएमके बिल्डर प्लगइन बहु-कॉन्फ़िगरेशन नौकरियों के साथ काम नहीं करता है। हम cmake --build का भी उपयोग नहीं कर सकते हैं, क्योंकि यह हमेशा डीबग कॉन्फ़िगरेशन बनाता है। आप संपूर्ण समाधान का निर्माण ALL_BUILD.vcxproj के बजाय .sln फ़ाइल निर्दिष्ट करना चाहते हैं

    cd c:\build 
    call "%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" 
    msbuild ALL_BUILD.vcxproj /verbosity:minimal /maxcpucount:1 /property:Configuration=%configuration% 
    

: निर्माण करने के लिए, हम एक और बैच स्क्रिप्ट का उपयोग करने के लिए है। आप केवल एक विशेष परियोजना का निर्माण करना चाहते हैं, तो

msbuild <solution>.sln /target:<project> 
+1

जहां तक ​​मुझे पता है, "camke --build।" हमेशा डीबग संस्करण का निर्माण करेगा। आपको msbuild Project.sln/m/p करना है: कॉन्फ़िगरेशन = रिलीज के लिए रिलीज – Lap

+0

उह, आप सही हैं। मैं तदनुसार अपना जवाब बदल दूंगा। –

3

दृश्य स्टूडियो जनरेटर का उपयोग जब आप cmake --build -command के निर्माण करने के लिए विन्यास पारित कर सकते हैं:

cmake --build . --config Release 
cmake --build . --config Debug 

भी देखें CMake docs

+1

यह आपके द्वारा उपयोग किए जा रहे जनरेटर पर निर्भर करता है। मेकफ़ाइल जैसे जनरेटर के लिए इसका कोई प्रभाव नहीं पड़ेगा। चरणबद्ध करने के लिए आपको CMAKE_BUILD_TYPE विकल्प को पास करना न भूलना होगा: 'cmake -DCMAKE_BUILD_TYPE = रिलीज' –

+0

क्योंकि सवाल विंडोज के बारे में था, मैंने विजुअल स्टूडियो ग्रहण किया, मैं अपना जवाब संपादित करूंगा। –