c#,在teamcity构建后部署windows任务和服务

本文关键字:windows 任务 服务 部署 teamcity 构建 | 更新日期: 2023-09-27 18:09:27

我们有一个由几个项目组成的解决方案。有些项目是windows任务,有些是windows服务,还有一些是运行在远程服务器上的mvc网站。在这台服务器上,我们目前正在将TeamCity作为CI服务器来实现构建和部署的自动化。目前,这些项目都部署在同一台服务器上。构建,测试步骤等工作良好,但我不确定如何部署任务和服务。所有关于这个主题的教程(至少我看过的那些)只涉及网站的部署。

最明显的方法是有一个post-build步骤,运行powershell脚本,卸载当前运行的windows服务,删除旧的服务,复制新的dll并重新启动服务。windows任务文件可以直接用新版本替换。

然而,我不喜欢这个解决方案,它感觉很生硬,如果部署服务器是远程的,可能很难实现。

谁有更好的建议如何进行部署?

祝你今天愉快!

c#,在teamcity构建后部署windows任务和服务

尝试查看Octopus depoy: http://octopusdeploy.com/。你可以轻松地将其与TeamCity整合。它有能力启动/停止服务和更多。此外,它使用nuget包。

您也可以通过Web部署工具部署windows服务。你所要做的就是用runCommand(运行/安装和启动/停止服务)和dirPath(部署服务)提供程序创建manifest.xml文件。

我的清单文件也部署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中的构建脚本生成的,但您可以按照自己的意愿做。

我写了两篇关于这个话题的博客,但是他们是捷克语的。

  • 封装参数化

希望有什么能帮到你。

Inedo的BuildMaster可以在TeamCity离开的地方使用BuildMaster TeamCity扩展。有一个免费的版本可能会满足你的需求。

我们必须解决这个问题,当我们使用BuildMaster来构建/部署BuildMaster(在安装程序被构建之前),如果你看看BuildMaster的细节(Inedo.com> Support> details> BuildMaster),你可以准确地看到我们如何停止/部署/启动Windows服务。