2012-02-14 10 views
5

जब मैं अपना एनयूनीट एंड-टू-एंड टेस्ट विफल रहता हूं तो मैं एक स्क्रीनशॉट बना रहा हूं और मैं इसे निम्नलिखित सेवा संदेश (जैसा कि here वर्णित है) का उपयोग करके टीमसिटी (बिल्ड एजेंट और सर्वर दोनों विंडोज़ पर चल रहा है) के साथ प्रकाशित करने की कोशिश कर रहा हूं। Console.WriteLine एक NUnit परीक्षण से साथ:TeamCity में प्रकाशित आर्टिफैक्ट्स सेवा संदेश का उपयोग करके निर्माण के दौरान मेरे कलाकृतियों को प्रकाशित क्यों नहीं किया गया?

##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png'] 

मैं निर्माण लॉग में लाइन देखें:

------- Stdout: ------- 
##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png'] 

लेकिन TeamCity फ़ाइल उठा नहीं है, या कम से कम यह निर्माण में नहीं दिखा रहा है कलाकृतियों। मैं यह काम कैसे पूरा कर सकता हूं?

+1

क्या यह संभव है कि आपका संदेश कुछ अक्षर जो बच गए किया जाना चाहिए शामिल हैं: http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-ServiceMessages? –

+0

नहीं, जब तक ':' और '\\' ठीक हैं (और वे दिखाई देते हैं) तो यह समस्या नहीं है। – GraemeF

उत्तर

0

सापेक्ष पथ का उपयोग करने का प्रयास करें। टीमसिटी को कार्यशील निर्देशिका बनाने के खिलाफ उन्हें हल करना चाहिए।

0

आप Console.WriteLine (नीचे देखें) के बजाय Console.Write आज़मा सकते हैं।

वैसे भी, मुझे लगता है कि टीमसिटी इन संदेशों को फँस नहीं पाती क्योंकि वे 'परीक्षण रिपोर्ट' हैं और टेक्स्ट आउटपुट के रूप में बिल्डॉग में संलग्न हैं।

मेरी भावना है कि उन्हें पार्स नहीं किया गया है और फिर बिल्ड स्क्रिप्ट इंटरैक्शन व्यवहार द्वारा व्याख्या नहीं किया गया है क्योंकि जिस तरह से वे बिल्ड लॉग में फंस गए हैं।

सेवा संदेशों आदेशों पारित/निर्माण स्क्रिप्ट से TeamCity सर्वर को जानकारी के निर्माण के लिए उपयोग किया जाता है:

Build Script Interaction (टीसी 7) से

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

आपको अपने परीक्षण कलाकृतियों को एक विशिष्ट फ़ोल्डर में रखना चाहिए और परीक्षण के बाद प्रकाशित करना चाहिए।

ध्यान दें कि यदि आपको गतिशील रूप से आर्टिफैक्ट को हल करने की आवश्यकता नहीं है, तो आपको सबसे आसान तरीका का उपयोग करना चाहिए: Artifact paths बिल्ड कॉन्फ़िगरेशन सामान्य सेटिंग्स में।

+0

'कंसोल। राइटलाइन 'सेवा संदेश के बाद * एक नई लाइन जोड़ता है, इसलिए यह समस्या नहीं है। जैसा कि उद्धरण कहता है, सेवा संदेशों को बस निर्माण की मानक आउटपुट स्ट्रीम में लिखा जाना चाहिए - वे कैसे फ़्लश किए जाते हैं अप्रासंगिक है। दुर्भाग्य से मुझे किसी और चीज को आजमाने के लिए प्रोजेक्ट तक पहुंच नहीं है :( – GraemeF

+0

लिपलाइन के बारे में हाँ यह कोशिश करने के लिए था। यह मेरे टीसी पर भी काम नहीं करता है।एनयूनीट आउटपुट की फ्लश के बारे में, यह पूरी तरह से अपरिवर्तनीय नहीं है क्योंकि ** परीक्षण आउटपुट मानक आउटपुट नहीं हैं **, प्रत्येक टेस्ट फ्रेमवर्क अपने कंसोल श्रोता को जोड़ता है। यदि आप 'nunit-console.exe' चलाते हैं तो आप देखेंगे कि आपके परीक्षण से 'WriteLine' किसी भी तरह थोक में दिखाई देता है। इसके अलावा, टीमसिटी अपने स्वयं के एनयूनीट धावक का उपयोग करती है। ध्यान दें कि आप जो कोशिश कर रहे हैं वह एमएसटीएस्ट के साथ काम नहीं करता है। आप अपने टेस्ट नाम के बाद '[टेस्ट आउटपुट]' जैसे कुछ देख सकते हैं और इसके आउटपुट से पहले, यह इस टेक्स्ट के कारण असफल हो सकता है। शायद एक बग? – JoeBilly

0

जेटब्रेन्स द्वारा प्रदान की NuGet पैकेज का प्रयोग करें, यह सब बारीकियों

NuGet Install TeamCity.ServiceMessages 

GitHub पर का ख्याल रखता है: https://github.com/JetBrains/TeamCity.ServiceMessages

+0

.NET के लिए बढ़िया ... – GraemeF

संबंधित मुद्दे