0

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

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

我们的问题:

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

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

提前感谢艾尔

4

1 回答 1

0

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

  1. 您能否澄清构建后命令不起作用的意思?它会失败还是只是没有达到您的预期?

  2. 你是如何设置你的构建后命令的?它是否引用特定的文件路径?TeamCity 执行 MSBuild 的方式与您从命令行或 Visual Studio 执行的方式相同。

关于 MSDeploy 文件夹问题,您可以使用跳过操作配置 MSDeploy,这里是另一个帖子的链接,描述了如何执行此操作 防止 MSDeploy(有选择地)删除目标 IIS 服务器上的文件夹

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

一个更简单的解决方案是使用诸如 Octopus Deploy 之类的部署工具来部署您的应用程序。您可以在http://octopusdeploy.com/了解有关 Octopus Deploy 的更多信息

于 2013-11-07T17:09:32.027 回答