6

की आवश्यकता के बिना स्थानीय रूप से या दूरस्थ रूप से एक एमएसबिल्ड ज़िप पैकेज को कैसे तैनात करें मैं आवेदन तैनाती के स्वचालन की अनुमति देने के लिए एक एप्लिकेशन बनाने की प्रक्रिया में हूं, (https://github.com/twistedtwig/AutomdatedDeployments#readme)।आईआईएस भागीदारी

यह विचार यह है कि सबकुछ स्रोत नियंत्रण, एप्लिकेशन फ़ाइलों, अनुप्रयोग कॉन्फ़िगरेशन के साथ-साथ आईआईएस कॉन्फ़िगरेशन में है। मेरा आवेदन डिवा मशीन के निर्माण के बाद, स्वत: तैनाती के समाधान को अनुमति देता है, (एसएलएन/प्रोज फ़ाइल में पोस्ट बिल्ड सेटप जोड़ना)। यह सीआई सर्वर को परीक्षण के लिए अपनी मशीन पर तैनात करने के साथ-साथ सीआई सर्वर को क्यूए/टेस्ट/उत्पादन सर्वर में सफल निर्माण को धक्का दे सकता है। एमएसडीओपी के साथ मेरे मुद्दों में से एक आईआईएस को वेबसाइट/एप्लिकेशन के साथ हाथ से स्थापित करने की आवश्यकता है, (जो मेरा ऐप चारों ओर घूमने की कोशिश कर रहा है)।

अब तक मैं स्वचालित रूप से कॉन्फ़िगरेशन फ़ाइलों के माध्यम से ऐप पूल, वेबसाइट्स और एप्लिकेशन बना, अपडेट और हटा सकता हूं। मैं फ़ाइलों और फ़ोल्डरों को ठीक से सिंक कर सकता हूं। आखिरी कदम वेब तैनाती के लिए स्वच्छ फ़ाइल संरचनाओं को बनाने के लिए msbuild में/target: पैकेज स्विच का उपयोग करना था। जैसे उदाहरण के लिए मैं एक आदेश चला जाएगा:

msbuild.exe myMvcSite.csproj /target:clean /target:package /p:Configuration=Release /p:_PackageTempDir=C:\websites\mySite /p:PackageLocation=C:\dropLocation\mySite.zip 

इस के आंतरिक फ़ाइल पथ के साथ एक अच्छा ज़िप फ़ाइल बनाता है "C_C \ wbesites \ mysite" तैयार (मैं यह समझ के रूप में) उत्पादन के लिए सिंक किए जा करने के लिए सर्वर।

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

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\Temp\deploy\installer\test\testPackage.zip" -dest:auto 
Info: Adding sitemanifest (sitemanifest). 
Error: The application pool that you are trying to use has the 'managedRuntimeVersion' property set to 'v2.0'. This application requires 'v4.0'. 
Error count: 1. 

और

"C:\Program Files\IIS\Microsoft Web Deploy v2\msdeploy.exe" -verb:sync -source:package="C:\website\installer\testPackage.zip" -dest:contentpath=C:\temp\mytest 
Error: Source (sitemanifest) and destination (contentPath) are not compatible for the given operation. 
Error count: 1. 

पहले आदेश मैं इसे संरचना यह है के साथ फ़ाइलों को खोल जाने के लिए कोशिश कर रहा हूँ। ऐसा लगता है कि ऐप पूल सामान के बारे में परेशान है, (जो मैं इसे छूना नहीं चाहता)।

दूसरा मैं "ऑटो" बिट के आसपास जाने की कोशिश कर रहा हूं लेकिन यह भी खुश नहीं है।

मैं इस प्रक्रिया के बारे में अधिक जानकारी प्राप्त करने के लिए संघर्ष कर रहा हूं।

एकमात्र तरीका मैं देख सकता हूं कि मैं इस समय इसे कैसे प्राप्त कर सकता हूं, इसके लिए msdeploy का उपयोग नहीं करना है, लेकिन फ़ाइल संरचना को एकीकृत करने के लिए अपना स्वयं का कार्य बनाना और फ़ाइल को स्वयं समन्वयित करना (आदर्श नहीं) करना है।

+0

क्या त्रुटि आप दूसरा आदेश पर प्राप्त कर रहे हैं? –

+0

त्रुटि: स्रोत (साइटमैनेप्शन) और गंतव्य (contentPath) दिए गए ऑपरेशन के लिए संगत नहीं हैं। त्रुटि गिनती: 1. (मेरे प्रश्न में दूसरा कोड ब्लॉक)। – Jon

उत्तर

1

मैं इसे हल करने में सक्षम होने के बजाय, इस मुद्दे के आसपास कोडिंग समाप्त कर दिया।

मैं ज़िप पैकेज लेते हैं: एक अस्थायी स्थान में

  1. unzip
  2. अंतिम पथ यह करने के लिए (archive.xml से सामान्य रूप से)
  3. जांच समाप्त होने वाला है यह देखने के लिए लगता है कि अगर मैं विलय कर रहा हूँ फ़ोल्डर या एक साफ स्थापित कर रहे हैं, (यानी मैं पहले गंतव्य फ़ोल्डर को हटा दें)।
  4. स्थान समाप्त करने के लिए प्रतिलिपि/पुश फ़ाइलें, (आमतौर पर msdeploy के साथ)।

मैं इस के लिए मेरे समाधान sourced खुला: https://github.com/twistedtwig/AutomatedDeployments