2013-04-16 67 views
1

我們有一個由多個項目組成的解決方案。一些項目是Windows任務,一些是Windows服務,一些是在遠程服務器上運行的mvc網站。在此服務器上,我們正在實施TeamCity作爲CI服務器,以實現我們的構建和部署自動化。到目前爲止,這些項目都部署在同一臺服務器上。構建,測試步驟等工作正常,但我不知道如何部署任務和服務。關於這個主題的所有教程(至少我見過的)只涉及網站的部署。C#,teamcity build後部署windows任務和服務

最明顯的方法是有一個後構建步驟運行powershell腳本,這些腳本正在卸載當前運行的Windows服務,刪除舊服務,複製新的dll並再次啓動服務。 Windows任務文件可以直接用新版本直接替換。

但是,我不喜歡這個解決方案,它感覺非常直率,如果部署服務器是遠程的,可能很難實現。

有沒有人有更好的建議如何進行部署?

祝您有美好的一天!

+0

運行msi安裝程序將舊服務替換爲構建後步驟可以接受嗎?在這種情況下,你可能想檢查這個答案http://stackoverflow.com/questions/4743064/windows-service-deployment。希望能幫助到你。 –

+0

不幸的是,不管怎樣,謝謝你的回答。 – olif

回答

1

您也可以通過Web部署工具部署Windows服務您只需要創建manifest.xml文件runCommand(取消/安裝和啓動/停止服務)和dirPath(部署服務)提供商。

我的清單文件也部署DB和網站看起來像:

<sitemanifest> 
    <dbDacFx path='$dbSource' /> 
    <runCommand path='$presync' waitInterval='30000'/> 
    <dirPath path='$winSource' /> 
    <runCommand path='$postsync' waitInterval='30000'/> 
    <IisApp path='$webSource' managedRuntimeVersion='v4.0'/> 
    <setAcl path='$webSource' setAclResourceType='Directory'/> 
    <setAcl path='$webSource' setAclResourceType='Directory' setAclUser='anonymousAuthenticationUser'/> 
</sitemanifest> 

它是由Psake中的構建腳本生成的,但您可以按照自己的意願進行操作。

我寫了兩篇關於這個話題的博客,但他們都是用捷克語寫的。

希望,有什麼可以幫助你。

3

嘗試看看八達通公司:http://octopusdeploy.com/。您可以輕鬆將其與TeamCity集成。它有能力明星/停止服務等等。而且它使用nuget包。

+0

這非常有用。對於小團隊來說是免費的! – Anshul

0

Inedo的BuildMaster可以在TeamCity離開時使用BuildMaster TeamCity Extension。有一個免費版本可以解決您的需求。

當我們使用BuildMaster構建/部署BuildMaster(安裝程序生成之前)時,我們必須解決這個問題,並且如果您查看BuildMaster特性(Inedo.com>支持>特定> BuildMaster,您可以請仔細參閱我們如何停止/部署/啓動Windows服務