【问题标题】:TFS Continuous Deployment for Windows Service?Windows 服务的 TFS 持续部署?
【发布时间】:2012-10-31 19:28:03
【问题描述】:

我已经设法使用 TFS Msbuild 为我的 Web 项目进行持续部署。

我已经搜索了几个小时,但找不到实现 Windows 服务持续部署的相关链接。

是否可以使用 TFS 构建定义为 Windows 服务制作 CD?即对于应执行以下步骤中的每个检查,我将 TFS2010 与 Windows Server 2008 R2 一起使用

1] 停止服务,

2] 将相应的项目文件夹从(源)构建服务器复制到(目标服务器)'staging server1'或'staging server2'

3] 启动服务(愿意手动执行此步骤)

任何博客,教程参考来实现这一点?我的猜测是需要使用 Power shell 脚本,但不确定。

【问题讨论】:

标签: xaml windows-services continuous-deployment


【解决方案1】:

应该没问题,您需要在要部署的机器上安装代理。并且您需要能够退出 XAML 模板(您可能希望复制执行构建的现有模板,然后将停止/复制/启动内容添加到它的末尾)。

在您的 CI 构建之后,您需要对其进行编辑(XAML 模板)以启动和停止您可以使用“调用流程”活动的服务(您可能想要执行一些操作,例如使其成为通用并通过在服务名称中作为参数 - 请注意,您可以更改元数据参数中的显示名称等,使其在您的构建定义中显得有意义)。

就复制内容而言,您可以通过访问诸如放置位置之类的属性来相当轻松地做到这一点。

应该相当直接 - 一旦你开始修改模板!

编辑:

很抱歉没有尽快回复,我不得不修改我之前的评论,这并不像看起来那么直接,除非你真的知道你想要什么,我一直在考虑这个,就像剥猫皮一样,有实现这一目标的方法不止一种......我已经重写了几次,所以我希望编辑有意义:)

归结为以下几点:

1) 将要在其上运行的构建代理/机器传递到您的模板中(这可以作为简单的字符串或作为 AgentReservationSpec - 由您决定),因为它不太可能是您运行的机器你的实际 CI 建立在。如前所述,这是在 XAML 的参数部分完成的,如果要编辑显示名称/描述,可以编辑元数据参数。这台机器当然需要安装 TFS 代理。

2) 在远程机器上运行任务,这是通过将 Agent Scope 活动添加到模板中来完成的,您必须使用步骤 1 中的信息来获取 ReservationSpec(如果添加参数会更容易作为 AgentReservationSpec 或者您需要在模板中解决此问题)

2.1) 运行停止/卸载,这是通过放入一个(实际上是两个)Invoke Process 活动来完成的,Invoke Process 可以接受参数,你需要将它指向你正在执行的可执行文件,所以你会想要要使用它,一个用于 NET 命令(即 NET STOP ),一个用于 InstallUtil.exe。

2.2) 将文件从 CI 复制到远程服务器,您可以使用 Copy Directory 活动,它需要几个参数,主要是源位置,您应该可以放入 GetBuildDetail活动,给它一个名字,然后引用 .DropLocation 来获取它,目的地是你想要安装到的任何地方。

2.3) 按照步骤2.1安装新服务,需要使用Invoke Process安装服务,然后可以使用另一个启动服务。

我没有涵盖所有内容,但我没有自己设置,所以我确信有一些陷阱或我没有想到的事情。在我看来这是有道理的,但也许有更了解的人可以在其中戳几个洞:)

【讨论】:

猜你喜欢
  • 2021-12-09
  • 1970-01-01
  • 2014-12-15
  • 2016-06-16
  • 2018-11-16
  • 2012-08-17
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
相关资源
最近更新 更多