2010-04-07 17 views
5

अपने प्रोजेक्ट की निर्माण लॉग में, मैं इन गुणों को देख सकते हैं:क्रूज़ कंट्रोलनेट के साथ बैच फ़ाइल में एकीकरण संपत्ति कैसे पास करें?

<integrationProperties> 
    <CCNetProject>Gdet_T</CCNetProject> 
    ... 
    <LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate> 
    <LastChangeNumber>10841</LastChangeNumber> 
</integrationProperties> 

मैं एक बैच फ़ाइल के लिए संपत्ति CCNetProject और LastChangeNumber पास करना चाहते हैं। यह CCNetProject, के साथ अच्छी तरह से काम करता है क्योंकि इसे बैच में पर्यावरण परिवर्तनीय %CCNetProject% के रूप में उपयोग किया जा सकता है।

लेकिन यह अन्य संपत्तियों (उन CCnet उपसर्ग के साथ शुरू नहीं कर रहे हैं) LastChangeNumber या LastModificationDate के रूप में साथ काम नहीं करता।

मैंने इसे तर्क के रूप में पारित करने की कोशिश की, लेकिन यह विफल हो गया!

<exec> 
    <executable>$(WorkingFolderBase)\MyBatch.bat</executable> 
    <baseDirectory>$(WorkingFolderBase)\</baseDirectory> 
    <buildArgs>$(LastModificationDate)</buildArgs> 
</exec> 

मैं वातावरण चर के रूप में इसे पारित करने की कोशिश की है, लेकिन यह विफल रहता है:

<exec> 
    <executable>$(WorkingFolderBase)\MyBatch.bat</executable> 
    <baseDirectory>$(WorkingFolderBase)\</baseDirectory> 
    <environment> 
    <variable> 
     <name>svn_label</name> 
     <value>"${LastModificationDate}"</value> 
    </variable> 
    </environment> 
</exec> 

परिणाम हमेशा एक ही है जब मैं पैरामीटर या चर प्रदर्शित: रिक्त स्ट्रिंग या चर नाम $(svn_label)

मुझे यकीन है कि यह आसान है, लेकिन ... मुझे नहीं मिल रहा है! कोई उपाय ?

+0

आप वातावरण चर और तर्क उदाहरण को मिलाया। –

+0

सही! मैंने ठीक कर दिया। – TridenT

उत्तर

0

ठीक है, समाधान मिला। svn संशोधन को पुनर्प्राप्त करने के लिए SvnRevisionLabeller नामक एक विशिष्ट लेबल का उपयोग करने की आवश्यकता है। यह तब CCNetLabel वातावरण चर के माध्यम से उपलब्ध है।

http://code.google.com/p/svnrevisionlabeller/

<labeller type="svnRevisionLabeller"> 
    <url>http://mysvnrootproject/trunk</url> 
</labeller> 
+0

यह थोड़ा अजीब है, लेकिन मैं अपना जवाब स्वीकार करूंगा :) मेरी मदद करने के लिए धन्यवाद दोस्तों, यह जांच के लिए बहुत उपयोगी था। – TridenT

8

CCNET बाहरी प्रोग्राम के लिए निम्नलिखित मानकों से गुजरता है:

CCNetArtifactDirectory 
CCNetBuildCondition 
CCNetBuildDate 
CCNetBuildTime 
CCNetFailureUsers 
CCNetIntegrationStatus 
CCNetLabel 
CCNetLastIntegrationStatus 
CCNetListenerFile 
CCNetModifyingUsers 
CCNetNumericLabel 
CCNetProject 
CCNetProjectUrl 
CCNetRequestSource 
CCNetUser 
CCNetWorkingDirectory 

आप LastIntegrationStatus उदा देख सकते हैं CCNetLastIntegrationStatus के माध्यम से उपलब्ध है लेकिन LastModificationDate उदा। कोई समकक्ष नहीं है।

आप के माध्यम से <buildArgs> या <environment> लेकिन अंदर CCNET विन्यास आप है कि ऊपर उल्लेख किया एकीकरण गुणों पर पहुँच नहीं अतिरिक्त तर्क पारित कर सकते हैं। सीसीएनईटी (स्वयं सहित) से शुरू होने वाले अधिकांश लोग <buildArgs>$(CCNetProject)</buildArgs> जैसे कुछ कोशिश करते हैं और असफल होते हैं।

मेरे answer to a similar question पर एक नज़र डालें।

क्षमा करें मैं बेहतर समाधान प्रदान नहीं कर सकता।

अद्यतन (Thinker's suggestion के बारे में):

CCNET विन्यास अंदर $[$CCNetLabel] का उपयोग करते हुए काम करने के लिए प्रतीत नहीं होता।

फ्रैंकली बोली जाती है, अगर मैं था तो मैं आश्चर्यचकित होता। कॉन्फ़िगरेशन कुछ स्थिर है जबकि CCNetLabel कुछ गतिशील है, जो संभावित रूप से प्रत्येक एकीकरण निर्माण के साथ बदलता है। मान लें कि आपके पास कॉन्फ़िगरेशन के अंदर इन गतिशील गुणों तक पहुंच है, कॉन्फ़िगरेशन प्रत्येक बिल्ड के साथ बदल सकता है। चूंकि कॉन्फ़िगरेशन को बदलने से स्वचालित रूप से CCNET सर्वर को पुनरारंभ करना है, इसलिए आप प्रत्येक बिल्ड के साथ सर्वर को पुनरारंभ करेंगे। वास्तव में एक वांछनीय व्यवहार नहीं है, है ना?

+0

मैंने जो पुराना प्रश्न देखा है, उसे देखते हुए मुझे यह उत्तर थिंकर द्वारा मिला: http://stackoverflow.com/questions/1563362/cruisecontrol-net-using-ccnetlabel-inside-ccnet-config-file/2299848#2299848। मैं इस समाधान को कल कोशिश कर दूंगा। –

+0

हाँ, मैं एसवीएन संशोधन संख्या – TridenT

+0

नहीं पाने के लिए कल सीसीनेट लेबलर को आज भी कोशिश करूंगा। मेरे लिए काम नहीं करता है। –