TeamCity配置

时间:2013-11-04 14:49:25

标签: msbuild teamcity msdeploy

我们对TeamCity的工作很陌生。我们有一个构建&部署pckage设置,它使用MSBuild / MSDeploy将更改发送到我们的Web服务器。但是,我们有一些问题(在同一篇文章中提出几个问题的道歉)。为了澄清,我们的解决方案如下:

  • 项目文件夹
    • WebApp(包括.csproj文件。包含名为“media”的文件夹 - 此文件夹不在SVN中)
    • 库(包括引用的程序集)

我们的问题:

  • Libraries文件夹中有一个特定文件夹,必须在构建后复制到bin目录中(因为程序集重定向)。我们一直使用PostBuild事件,但这在TeamCity中不起作用。
  • WebApp文件夹中的“media”文件夹不包含在SVN中。执行TeamCity包时,它会删除此文件夹。我想阻止TeamCity仅删除此文件夹。
  • 当我们运行TeamCity任务时,我们会在同步任务期间为teamcity尝试删除的其中一个文件收到ERROR_FILE_IN_USE错误。我已经阅读了有关使用app_offline.htm文件来解决这个问题的方法 - 但我还是不确定。

我猜这些设置中的一些可能是msbuild作业中的命令行参数 - 我认为最好将它们存储在csproj文件中而不是仅仅存在于teamcity中?如果可能的话?

提前谢谢 人

1 个答案:

答案 0 :(得分:0)

关于所提供信息的几个问题

  1. 你能说清楚构建后命令的意思吗?是失败还是不做你期望的事?

  2. 您是如何设置构建后命令的?它引用了特定的文件路径吗? TeamCity可以在命令行或visual studio中执行相同的MSBuild。

  3. 关于MSDeploy文件夹问题,您可以使用Skip Action配置MSDeploy,这是指向另一篇文章的链接,描述如何执行此操作 Prevent MSDeploy (selectively) from deleting folders on target IIS server

    由于MSDeploy正在尝试部署到IIS使用的文件夹中,因此您也看到了文件锁定问题。有两种解决方案 1.在部署之前添加teamcity步骤以停止IIS(使用PowerShell)。这将导致停机。 2.部署到其他文件夹,然后将IIS切换为指向新文件夹。这是一个更好的解决方案,因为您还可以回滚。

    所有这一切的更简单的解决方案是使用部署工具(如Octopus Deploy)来部署您的应用程序。您可以在http://octopusdeploy.com/

    了解有关Octopus Deploy的更多信息