मैं जेनकींस को निम्नलिखित कैसे कर सकता हूं?जेनकींस + विंडोज + सीएमके + एकाधिक निर्माण प्रकार (डीबग, रिलीज)
एसवीएन से चेकआउट ट्रंक/फिर कॉन्फ़िगरेशन के लिए डुप्लिकेट नौकरियों के बिना, सीएमकेक का उपयोग करके कॉन्फ़िगरेशन डीबग और रिलीज बनाएं।
मैं जेनकींस को निम्नलिखित कैसे कर सकता हूं?जेनकींस + विंडोज + सीएमके + एकाधिक निर्माण प्रकार (डीबग, रिलीज)
एसवीएन से चेकआउट ट्रंक/फिर कॉन्फ़िगरेशन के लिए डुप्लिकेट नौकरियों के बिना, सीएमकेक का उपयोग करके कॉन्फ़िगरेशन डीबग और रिलीज बनाएं।
अब, मैंने पाया कि आप संभव के रूप में कुछ नौकरियों यदि आप स्रोत निर्देशिका का पुन: उपयोग करना चाहते हैं का उपयोग करना चाहिए का उपयोग कुछ समय के लिए जेनकींस इस्तेमाल करने के बाद।
जेनकींस में डिफ़ॉल्ट सेटअप यह है कि प्रत्येक बिल्ड अपनी कार्यक्षेत्र के रूप में एक अलग निर्देशिका का उपयोग करता है। जिसका अर्थ है कि आप हर निर्माण में एक पूर्ण एसवीएन चेकआउट करते हैं।जो हमेशा के लिए लेता है।
यदि आप प्रत्येक निर्माण के लिए एक ही स्रोत निर्देशिका का उपयोग करना चाहते हैं, तो आपको सिंक्रनाइज़ेशन के बारे में चिंता करनी होगी: एक समय में केवल एक ही निर्माण। जहां तक मुझे पता है, जेनकींस में सिंक्रनाइज़ेशन का कोई अंतर्निहित साधन नहीं है। एकमात्र तरीका केवल एक निष्पादक का उपयोग करना है। फिर भी आप निष्पादक द्वारा अपना अगला काम चुनने के तरीके को नियंत्रित नहीं कर सकते हैं।
मान लें कि "एसवीएन अपडेट" नौकरी "बिल्ड" ट्रिगर करता है। कोई "एसवीएन अपडेट # 33" शुरू करता है, जिसे "बिल्ड # 33" ट्रिगर करना है। यदि, हालांकि, जेनकिन्स के "पोल एससीएम" फीचर शेड्यूल "एसवीएन अपडेट" # 34 के दौरान, मुझे यह बताने का कोई तरीका नहीं मिला है कि "बिल्ड # 33" को "एसवीएन अपडेट # 34" से पहले चलाना चाहिए। तो आप "बिल्ड # 33" से पहले चल रहे "एसवीएन अपडेट # 34" के साथ समाप्त हो सकते हैं, और सब कुछ विफल हो जाता है। जब तक आप मतदान नौकरी मैन्युअल रूप से अक्षम नहीं करते हैं। और निश्चित रूप से इसे बाद में पुनः सक्षम करने के लिए याद दिलाएं।
वैसे भी। जेनकींस का उपयोग करने के बाद, मैंने अपना जवाब बदल दिया: कभी भी संसाधनों को साझा करने वाली कई नौकरियों का उपयोग न करें (स्रोत डीआईआर की तरह), और सभी तर्क को शैल स्क्रिप्ट में (कॉन्फ़िगरेशन पर लूप के लिए) सेंकना।
Jenkins Matrix job का उपयोग करें। अक्षरों में से एक को build_mode मान डीबग और रिलीज के साथ परिभाषित करें। फिर आप सीएमके चलाते हैं जो संकलन उपकरण के लिए कॉन्फ़िगरेशन बनाएगा जो आप उपयोग करेंगे (एक्सकोड, जीसीसी, विजुअलस्टूडियो, आदि)। इसके बाद आप build_mode का उपयोग कर सकते हैं जैसे कि यह एक पर्यावरण चर था और वास्तविक संकलन करने वाले चरणों को बनाने के लिए इसे पास कर सकता है।
आपके उत्तर के लिए धन्यवाद। मैंने उतना ही सोचा, लेकिन अभी भी मुझे जानकारी देने के लिए थोड़ी देर लग गई। –
अगर उत्तर वास्तव में सहायक था तो कृपया [स्वीकार करने] पर विचार करें (http://meta.stackexchange.com/a/5235/177981) या [upvoting] (http://meta.stackexchange.com/a/130054/177981) यह। –
यह काम cmakeplugin के साथ? मैंने "अन्य बिल्ड प्रकार" में $ build_type डाला लेकिन यह इसका विस्तार नहीं करता है। – shenshei
मुझे यह पता लगाने में थोड़ी देर लग गई। यहां बताया गया है कि मैं इसे कैसे करने में कामयाब रहा।
बिल्ड के तहत निम्न विंडोज बैच कमांड जोड़ें, जिसका उपयोग बिल्ड डीआईआर को साफ करने के लिए किया जाता है। किसी कारण से, सीएमके ऐसा करने का कोई तरीका नहीं प्रदान करता है।
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
दूसरी नौकरी बनाएँ "बिल्ड", इस बार यह एक "बहु विन्यास" काम करते हैं। यह काम प्रत्येक कॉन्फ़िगरेशन (डीबग/रिलीज) के लिए चलने जा रहा है।
अब मूल्यों "डीबग रिलीज" (सफेद स्थान को = विभाजक) के साथ एक धुरी "विन्यास" जोड़ें। दुर्भाग्यवश, जेनकींस के लिए सीएमके बिल्डर प्लगइन बहु-कॉन्फ़िगरेशन नौकरियों के साथ काम नहीं करता है। हम 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>
जहां तक मुझे पता है, "camke --build।" हमेशा डीबग संस्करण का निर्माण करेगा। आपको msbuild Project.sln/m/p करना है: कॉन्फ़िगरेशन = रिलीज के लिए रिलीज – Lap
उह, आप सही हैं। मैं तदनुसार अपना जवाब बदल दूंगा। –
दृश्य स्टूडियो जनरेटर का उपयोग जब आप cmake --build
-command के निर्माण करने के लिए विन्यास पारित कर सकते हैं:
cmake --build . --config Release
cmake --build . --config Debug
भी देखें CMake docs।
यह आपके द्वारा उपयोग किए जा रहे जनरेटर पर निर्भर करता है। मेकफ़ाइल जैसे जनरेटर के लिए इसका कोई प्रभाव नहीं पड़ेगा। चरणबद्ध करने के लिए आपको CMAKE_BUILD_TYPE विकल्प को पास करना न भूलना होगा: 'cmake -DCMAKE_BUILD_TYPE = रिलीज' –
क्योंकि सवाल विंडोज के बारे में था, मैंने विजुअल स्टूडियो ग्रहण किया, मैं अपना जवाब संपादित करूंगा। –
आप "जेनकिंस बिल्ड अवरोधक] (https://wiki.jenkins-ci.org/display/JENKINS/Build+Blocker+Plugin) का उपयोग कर सकते हैं -" बिल्ड "के दौरान" एसवीएन अपडेट "-job को अवरुद्ध करने के लिए प्लगइन - नौकरी चल रही है –