簡短的問題然後解釋 我們希望創建修補程序並僅包含由於dotnet應用程序的一些錯誤修正而在構建中發生更改的文件。補丁應該自動構建在涉及SVN,Cruisecontrol.net和msbuild的持續集成過程中。.NET應用程序的自動修補程序構建和部署
我們在這裏有一個場景: 我們希望維護一個運行在遠程服務器上的.net應用程序,並使用持續集成。源代碼位於SVN中,並具有DEV,QA和PROD的3個不同的存儲庫。 我們的開發人員幾乎每天都會進行新的錯誤修復,並在初次測試和滿意後將更改合併到開發庫中。 解決某個問題後的代碼或添加了某個功能後,將其合併到QA存儲庫中。 QA代碼是在QA機器上手動構建和測試的。 質量保證測試結束後,我們將其合併到PROD中。通過它,QA還爲需要手動替換或更改的文件創建新的補丁。然後將這些修補程序部署在臨時服務器上。在此基礎上進行測試,直到完美,然後將修補程序部署到實際的遠程服務器上。
爲了尋求持續集成,我們現在試圖使用CruiseControl.net和msbuild的混合來完成這個過程。 這個過程很好,直到我們必須從QA生成補丁的階段自動生成。補丁生成後,我們將把它們放在一個ftp服務器上,並從它們中將它們下載到登臺服務器中進行測試。 問題即從新版本生成補丁有幾個方面。該應用程序的解決方案文件包含許多項目,並且使用postbuild事件將dll複製到啓動應用程序bin文件夾中。所以我們在實際應用中有一個特定的目錄結構,它本身就是6個或多或少相互獨立的解決方案的組合。
我們試圖創建補丁的方式是我們正在搜索svn的日誌以查找哪些文件已更改。然後我們解析它找到項目名稱。然後,我們將通過使用包含應用程序所有文件的映射文件,將該項目的bin目錄中的所有文件以該版本具有的特定方式複製到patch文件夾中。
所以任何人都可以請建議一個更好或更簡單的方法來提供補丁提供我們有svn和cruisecontrol.net。或者任何其他開源工具來做到這一點。
希望這個問題是清楚的
問題是指您的應用程序安裝在服務器上,那麼如果版本號有變化,您是否想自動更新.DLL文件?如果是這樣的話,可以將從連續構建中輸出的程序集合放到一個文件夾中,那麼我可以看看發佈一個解決方案:) – LukeHennerley
否部署任務是由腳本完成的,該腳本只是將修補程序放入ftp和遠程服務器自動下載任何新的補丁並應用它們。如果您有任何其他方法有更好的主意,我們可以實現它,而不是腳本 – puneet
這正是我想要做的。通過查找自上次構建以來哪些dll已更改並將其放入預定義的目錄結構中來創建補丁。 – puneet