6

我正在創建一個允許應用程序部署自動化的應用程序(https://github.com/twistedtwig/AutomdatedDeployments#readme)。如何在本地或遠程部署一個msbuild壓縮包,而不需要IIS參與

這個想法是一切都在源代碼管理,應用程序文件,應用程序配置以及IIS配置。我的應用程序允許解決方案在構建到開發機器之後自動部署(向sln/proj文件中添加後期構建setp)。它將允許CI服務器自動部署到其機器進行測試,以及CI Server將成功構建推送到QA /測試/生產服務器。我使用msdeploy時遇到的一個問題是需要事先與網站/應用程序一起設置IIS(我的應用程序試圖解決這個問題)。

到目前爲止,我可以通過配置文件自動創建,更新和刪除應用程序池,網站和應用程序。我可以同步文件和文件夾。最後一步是使用msbuild中的/ target:package開關爲Web部署創建乾淨的文件結構。例如,我會運行一個命令,如:

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

這將創建的內部文件路徑一個不錯的zip文件「C_C \ wbesites \ MYSITE」準備就緒(據我所知),以可以同步生產服務器。

我的問題是我如何部署這個zip文件。我希望它獨立於任何IIS信息,即我只是將文件/文件夾推送到某個位置(在本地計算機上供開發人員使用,或者遠程進行測試等)。應用程序池和網站等IIS的設置將分開處理。有些我已經嘗試的命令(及其輸出)低於:

"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

錯誤:源(sitemanifest)和目標(contentPath)對於給定的操作不兼容。 錯誤計數:1.(我的問題中的第二個代碼塊)。 – Jon

回答

1

我最終編碼圍繞這個問題,而不是能夠解決它。

我把zip包:

  1. 解壓一個臨時位置
  2. 發現將去(通常來自archive.xml)
  3. 檢查,看看最終的路徑,如果我合併文件夾或乾淨的安裝,(即我首先刪除目標文件夾)。
  4. 將文件複製/推送到結束位置(通常使用msdeploy)。

我開源我解決這個:https://github.com/twistedtwig/AutomatedDeployments

相關問題