2016-03-18 61 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