2016-03-18 60 views
1

我的應用程序包含一系列微服務。所有微服務都在一個Visual Studio解決方案中。每個微服務都有一個帶有Topshelf的控制檯應用程序項目,用於將微服務作爲Windows服務輕鬆安裝。以精益的方式部署微服務(Windows服務)腳本

本地開發的微服務需要在我們的網絡(同一個域)內的服務器上安裝爲Windows服務。目前的流程是:

  1. 構建溶液(每慢速獵豹製造環境改造)
  2. 複製從我的文件管理器在選定的目錄中建立文物
  3. 遠程桌面到服務器
  4. 過去的文物(在服務器上)
  5. 與TopShelf service.exe install -username:XXX -password:YYY
  6. 安裝啓動服務

如果我寫了一個錯誤修復,我需要重做前五步並重新啓動服務。 考慮這個工作乘以服務的數量乘以新功能。地獄生活!

我想要的是一個更精簡的部署過程。鑑於團隊不擅長單元測試,持續集成/交付策略不太可行。所以,我真的會是一種腳本,將做上述六個步驟自動方式和理想:

  • 腳本應該是源代碼控制(理想情況下,Topshelf主體項目內)下
  • 腳本應該在Visual Studio中運行的
  • 腳本應該問什麼樣的環境部署

我會避免複雜的持續集成工具,像TeamCity的(也許連同八達部署或其他協調器) ,因爲我們有適當的代碼覆蓋範圍,而且我只是更換這六個步驟。

Psake呢?有人可以在類似的問題上有一些經驗嗎?

回答

1

您應該可以使用PowerShell腳本完成所需的任何操作。

我會使用環境變量和構建條件來參數化每個環境變化的變量,以執行基於Build類型的變量設置腳本(我假設每個環境至少有一個使用SlowCheetah的構建配置)。

使用這些通用環境變量編寫PowerShell腳本。爲了運行可執行文件和啓動/停止服務,您將需要管理員和遠程腳本對部署機器的執行權限。

如果您無法進行TeamCity安裝,還可以考慮使用更輕的CI服務器選項(如CruiseControl.NET)。 CC.Net在構建配置中包含PowerShell腳本執行選項。

腳本示例:

PowerShell中拷貝:

Copy-Item -Path $Source -Destination $Destination 

啓動服務:

start-service $SvcName 

超鏈接:

Tutorial on running remote scripts using PowerShell