2013-02-11 83 views
5

के माध्यम से विफल रहता है। मैं एक वीएस। एसएलएन बनाने की कोशिश कर रहा हूं जिसमें एकाधिक C++ .vcproj है। समाधान फ़ाइल सीएमके का उपयोग करके उत्पन्न होती है और मुझे यह हिस्सा जेनकींस में काम कर रहा है (सीएमके बिल्डर प्लगइन के साथ)। समाधान फ़ाइल बनाने के लिए, मैं msbuild का उपयोग कर रहा हूँ। मैं समाधान दोनों दृश्य स्टूडियो और निम्न आदेश के साथ कमांड लाइन से का उपयोग कर निर्माण करने में सक्षम हूँ:एमएसबिल्ड वीएस और कमांड लाइन के माध्यम से काम करता है, लेकिन जेनकींस

C:\Jenkins\workspace\SonioTest>"C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe" /t:Rebuild bin/SonIO.sln 

यह सफलतापूर्वक बनाता है (एक ही मशीन है कि जेनकींस रहता है पर)।

हालांकि, मैं जेनकींस में निर्माण के इस हिस्से को स्वचालित करने की कोशिश कर रहा हूं और निर्माण C1083 त्रुटियों ("Cannot open source file: '..\path\to\file.ext': No such file or directory) के साथ विफल होने के समाप्त हो गया है। मैंने जेनकिन्स एमएसबिल्ड प्लगइन दोनों का उपयोग करके और उसी परिणाम के साथ टर्मिनल में "विंडोज बैच कमांड निष्पादित करें" चरण के रूप में टर्मिनल में काम करने वाले सटीक वही कमांड का उपयोग करने का प्रयास किया है।

जब Windows बैच आदेश का निर्माण कदम का उपयोग कर, मैं लॉग में देख सकते हैं कि आदेश निष्पादित किया जा रहा:

C:\Jenkins\workspace\SonioTest>"C:\Windows\Microsoft.NET\Framework\v4.0.30319 msbuild.exe" /t:Rebuild bin/SonIO.sln

... वास्तव में एक है कि कमांड लाइन से काम करता है के रूप में ही है , जिसमें कार्यशील निर्देशिका शामिल है।

मैं जेनकींस को सेवा के रूप में चला रहा हूं और मेरे पास मेरे खाते (व्यवस्थापक विशेषाधिकारों के साथ) सेवा लॉगऑन है। किसी को भी पता है कि जेनकिंस बैच कमांड को निष्पादित करेगा क्या निर्देशिका?

कोई विचार क्यों मैं जेनकींस और कमांड लाइन के बीच व्यवहार के इस अंतर को देख रहा हूं?

+0

मुझे लगता है कि आप% WORKSPACE% –

+0

की तरह एक प्लेसहोल्डर का उपयोग करके अपने समाधान का निरपेक्ष पथ निर्दिष्ट करना एक Windows कमान से "सेट" कर दिया है मैंने सत्यापित किया है कि आदेश एक ही कामकाजी निर्देशिका से जेनकिंस द्वारा चलाया जा रहा है। क्या आपकी टिप्पणी अभी भी लागू होती है? मुझे 100% यकीन नहीं है कि आपका क्या मतलब है। – Kohanz

उत्तर

1

वीएस बिल्ड के बारे में बहुत कुछ जानने के बिना, यह ज्यादातर पर्यावरण सेटअप की तरह दिखता है।

मेरी पहली सलाह यह सुनिश्चित करना होगा कि, जेनकींस में, आप निर्देशिका को उसी निर्देशिका में बदल दें जिससे आपने अच्छा आदेश चलाया और फिर कोशिश की।

इसके अलावा, शायद जेनकिंस को स्टैंडअलोन ऐप के रूप में चलाने का प्रयास करना चाहें।

और एक सेवा के रूप में, शायद "डेस्कटॉप के साथ बातचीत" करने की सेवा की अनुमति दें।

मुझे आशा है कि यह एक अच्छा नेतृत्व है ...

+0

मैंने सत्यापित किया है कि यह सफल गैर-जेनकींस कमांड के रूप में एक ही कार्यशील निर्देशिका से चल रहा है (मेरा संपादन देखें)। "डेस्कटॉप के साथ इंटरैक्ट" चेकबॉक्स गहरा हुआ है क्योंकि मैं अपना खुद का (व्यवस्थापक) उपयोगकर्ता खाता निर्दिष्ट करता हूं। – Kohanz

+0

क्या आपने जेनकींस को एक प्रक्रिया के रूप में चलाने की कोशिश की है, न कि सेवा के रूप में? –

3

यह रूप में ज्यादा एक समाधान के रूप में एक समाधान नहीं है, लेकिन मैं devenv बजाय msbuild का उपयोग कर समाप्त हो गया है और यह ठीक काम करता है।

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

1

इस खाते द्वारा पर्यावरण का उपयोग किया जा रहा है कि जेनकिंस दास एजेंट एक ही वातावरण नहीं है जैसा कि आप एक प्रॉम्प्ट से एक ही कमांड लाइन करते समय उपयोग करते हैं। दो वातावरण की तुलना करें, अंतर ध्यान दें, फिर उन्हें जेनकींस नौकरी में जोड़ें।

गुलाम जबकि चलाने का वातावरण प्राप्त करने के लिए, यह एक के लिए प्रेरित करें

+0

मैंने यह किया (डेवेनव में स्विच करने से पहले) और जेनकिन्स गुलाम पर्यावरण लगभग (पूरी तरह से नहीं) मेरे कमांड लाइन पर्यावरण के सुपरसैट था। मैंने संकलन (वीसी ...) के साथ करने के लिए बारीकी से चर की जांच की और वे जेनकिन्स दास के साथ कुछ अतिरिक्त लोगों के साथ काफी समान थे। मैं मदद की सराहना करता हूं, लेकिन जब तक मेरे पास devenv.exe से स्विच करने का कोई अनिवार्य कारण नहीं है, तो मैं जांच में अधिक समय नहीं डुबोता। – Kohanz