CruiseControl.NET के माध्यम से आप एक क्लिकऑन एप्लिकेशन कैसे प्रकाशित कर सकते हैं?

मेरे पास क्रूज़ कंट्रोल.NET संस्करण 1.4 है जो मेरे विकास सर्वर पर स्थापित है। जब भी कोई डेवलपर कोड में जांच करता है, तो यह संकलन करता है।

अब हम ऐसे स्थान पर हैं जहां हम टेस्टर्स को अपना आवेदन देना शुरू कर सकते हैं। हम आवेदन वितरित करने के लिए क्लिकऑन का उपयोग करना चाहते हैं, इस विचार के साथ कि जब एक परीक्षक आवेदन का परीक्षण करने के लिए जाता है, तो उनके पास नवीनतम निर्माण होता है।

मुझे CruiseControl.NET के साथ ऐसा करने का कोई तरीका नहीं मिल रहा है। हम बिल्ड करने के लिए एमएसबीयूआईएलडी का उपयोग कर रहे हैं।

0
ro fr bn

4 उत्तर

पूरी सहायताके लिए शुक्रिया। हमने जो अंतिम समाधान लागू किया वह हर उत्तर से थोड़ा सा लिया।

हमें सरल बैच फ़ाइलों का उपयोग करके कई वातावरण के साथ काम करना आसान लगता है। मैं यह सुझाव नहीं दे रहा हूं कि ऐसा करने का यह सबसे अच्छा तरीका है, लेकिन हमारे दिए गए परिदृश्य और आवश्यकताओं के लिए, यह अच्छी तरह से काम करता है। अपने प्रोजेक्ट नाम और "पर्यावरण" के साथ पूरक "परियोजना" अपने पर्यावरण के नाम (देव, परीक्षण, चरण, उत्पादन, जो कुछ भी) के साथ।

यहां हमारे "ccnet.config" फ़ाइल का कार्य क्षेत्र है।

<!-- override settings  -->

    F:\Source\Project\Environment\CruiseControl\CopySettings.bat


<!-- compile -->

    C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe
    F:\Source\Project\Environment\
    Project.sln
    /noconsolelogger /p:Configuration=Debug /v:diag
    Rebuild
    0
    ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll


<!-- clickonce publish  -->

    F:\Source\Project\Environment\CruiseControl\Publish.bat

पहली बात यह है कि आप नोटिस करेंगे कि CopySettings.bat चलाता है। यह पर्यावरण कनेक्शन के लिए विशिष्ट सेटिंग्स की प्रतिलिपि बनाता है, जैसे डेटाबेस कनेक्शन।

अगला, मानक MSBUILD कार्य चलता है। किसी भी संकलन त्रुटियों को यहां पकड़ा जाता है और सामान्य के रूप में संभाला जाता है।

निष्पादित करने की आखिरी चीज़ Publish.bat है। यह वास्तव में कमांड लाइन से एमएसबीयूआईएलडी "पुनर्निर्माण" करता है, और क्रूज़ कंट्रोल के पैरामीटर स्वचालित रूप से पारित और निर्मित होते हैं। इसके बाद, एमएसबीयूआईएलडी को "प्रकाशित" लक्ष्य के लिए बुलाया जाता है। प्रकाशन के लिए सटीक समान पैरामीटर दिए जाते हैं क्योंकि पुनर्निर्माण जारी किया गया था। यह निर्माण संख्या को सिंक में रखता है। इसके अलावा, हमारे निष्पादन योग्य नाम अलग-अलग हैं (यानी - प्रोजेक्टडेव और प्रोजेक्टटेस्ट)। हम अलग-अलग संस्करण संख्याओं और नामों के साथ समाप्त होते हैं, और यह क्लिकऑन को अपनी चीज़ करने की अनुमति देता है।

Publish.bat का अंतिम भाग वास्तविक फ़ाइलों को उनके नए घरों में कॉपी करता है। हम publ.htm का उपयोग नहीं करते हैं क्योंकि हमारे सभी उपयोगकर्ता नेटवर्क पर हैं, हम उन्हें अपने डेस्कटॉप पर मैनिफेस्ट फ़ाइल के लिए शॉर्टकट देते हैं और वे उस संस्करण संख्या के साथ सही निष्पादन योग्य पर क्लिक करके हमेशा चल रहे हैं क्रूज नियंत्रण।

यहां CopySettings.bat है

XCOPY "F:\Source\Project\Environment\CruiseControl\Project\app.config" "F:\Source\Project\Environment\Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.Designer.vb" "F:\Source\Project\Environment\Project\My Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.settings" "F:\Source\Project\Environment\Project\My Project" /Y /I /R

और आखिरकार, यहां प्रकाशित है। बिट

C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:rebuild "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationRevision=%CCNetLabel% /property:AssemblyName="ProjectEnvironment" /property:PublishUrl="\\Server\bin\Project\Environment\\"
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:publish "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationVersion="1.0.0.%CCNetLabel%" /property:AssemblyVersion="1.0.0.%CCNetLabel%" /property:AssemblyName="ProjectEnvironment" 

XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish" "F:\Binary\Project\Environment" /Y /I
XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish\Application Files" "F:\Binary\Project\Environment\Application Files" /Y /I /S

जैसे मैंने कहा, संभवतः ऐसा नहीं किया गया है कि क्रूज़ कंट्रोल और एमएसबीयूआईएलडी डेवलपर्स ने चीजों को काम करने का इरादा किया था, लेकिन यह काम करता है। अगर आपको कल यह काम करने की ज़रूरत है, तो यह वह समाधान हो सकता है जिसे आप ढूंढ रहे हैं। सौभाग्य!

0
जोड़ा

आप msbuild में क्लिकऑन मेनिफेस्ट जनरेशन कार्यों का उपयोग करना चाहते हैं। प्रक्रिया थोड़ी देर तक घुमाया गया है, इसलिए मैं आपको कुछ लिंक पर इंगित करने जा रहा हूं। यहां msdn पर संदर्भ और एक नमूना आलेख उम्मीद है कि आप शुरू कर देंगे।

0
जोड़ा

हमने यह किया है और आपको कुछ पॉइंटर्स शुरू करने के लिए दे सकते हैं।

2 चीजें जिनके बारे में आपको अवगत होना चाहिए:

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

ClickOnce प्रकट करने के लिए MSBuild का उपयोग करने के लिए, यहां वह आदेश है जिसे आपको जारी करने की आवश्यकता होगी:

msbuild /target:publish /p:Configuration=Release /p:Platform=AnyCPU; "c:\yourProject.csproj"

यह एमएसबिल्ड को आपकी परियोजना बनाने और bin \ Release \ YourProject.publish निर्देशिका के अंदर क्लिकऑन परिनियोजन फ़ाइलों को उत्पन्न करने के लिए बताएगा।

जो कुछ भी बचा है, वह उन फ़ाइलों को एफ़टीपी/यूएनसी शेयर/कहीं भी कॉपी करना है, और आप सब तैयार हैं।

आप उन MSBuild पैरामीटर का उपयोग करने के लिए CruiseControl.NET को बता सकते हैं।

इसके बाद आपको जेनरेट की गई तैनाती फ़ाइलों को लेने और उन्हें एफ़टीपी या यूएनसी शेयर में कॉपी करने के लिए क्रूज़ कंट्रोल.NET बिल्ड कार्य की आवश्यकता होगी। हम इसके लिए एक कस्टम छोटे सी # कंसोल प्रोग्राम का उपयोग करते हैं, लेकिन आप आसानी से पावरहेल स्क्रिप्ट का उपयोग कर सकते हैं।

0
जोड़ा
धन्यवाद, जेम्स। हाँ, यह मूल रूप से 2008 में उत्तर दिया गया था, जब यह सब ताजा और सेक्सी था; यह 7 साल बाद प्रासंगिक नहीं हो सकता है।
जोड़ा लेखक Judah Himango, स्रोत
मैं बस यह इंगित करना चाहता हूं कि यह थोड़ा पुराना है। यह मानते हुए कि आपकी पोस्ट सही थी, एमएसबील्ड को यूएनसी शेयरों को तैनात करने के लिए अद्यतन किया गया है, जो अब मैं कई सक्रिय परियोजनाओं में करता हूं।
जोड़ा लेखक James LaPenn, स्रोत

मुझे लगता है कि पिछले साल एक क्लिकऑन परियोजना के लिए मैं काम कर रहा था। मुझे याद है कि यह मुझे हमेशा के लिए लेने के लिए ले रहा है लेकिन यहां यह है। मैं अपनी स्क्रिप्ट्स को जो करना चाहता था वह एक अलग इंस्टॉलर उत्पन्न करना था जो हमारे देव env और प्रोड के लिए एक अलग व्यक्ति को इंगित करता था। इतना ही नहीं, लेकिन मुझे सही संस्करण जानकारी को इंजेक्ट करने की आवश्यकता थी ताकि मौजूदा क्लाइंट 'एहसास' कर सकें कि वहाँ एक नया संस्करण है जो क्लिकऑन का पूरा बिंदु है। इस स्क्रिप्ट में आपको अपने सर्वर नामों के साथ प्रतिस्थापित करना होगा। यह चाल publ.htm और project.publish फ़ाइल को सहेजना है और CC.NET द्वारा प्रदान किए गए संस्करण के आधार पर नया संस्करण संख्या इंजेक्ट करना है।

यहां मेरी बिल्ड स्क्रिप्ट की तरह दिख रहा है:


  

  

    
      
    

    
      
        
      
     
  


उम्मीद है की यह मदद करेगा

0
जोड़ा