【问题标题】:TeamCity output artifacts not published to IIS7 folderTeamCity 输出工件未发布到 IIS7 文件夹
【发布时间】:2011-02-01 08:55:24
【问题描述】:

我正在尝试设置 TeamCity 来构建和部署 ASP.NET MVC 应用程序。

我在其他使用 TeamCity 4.5 的服务器上成功运行了设置,但新服务器运行的是 TeamCity 6,我无法让它按预期工作。

TeamCity 设法从源代码管理中获取文件,并且项目(Visual Studio 解决方案 2008 设置为“构建”)按预期构建和输出必要的文件。问题似乎出在我的工件路径上,因为输出文件没有复制到网站文件夹。

我的解决方案由十几个项目组成,其中“Web”项目是本例中有趣的项目。构建检出目录为 C:\TeamCity\buildAgent\work\7da320cebf0ee541,“Web”项目位于 C:\TeamCity\buildAgent\work\7da320cebf0ee541\Web

我已经使用以下工件路径(相对于从结帐目录到包含网站的文件夹)设置了构建配置:

Web/bin=>../../../../inetpub/wwwroot/staging/bin
Web/Content=>../../../../inetpub/wwwroot/staging/Content
Web/Views=>../../../../inetpub/wwwroot/staging/Views
Web/Media=>../../../../inetpub/wwwroot/staging/Media
Web/*.aspx=>../../../../inetpub/wwwroot/staging
Web/*.asax=>../../../../inetpub/wwwroot/staging

(我尝试了更多 ../ 以防万一,但没有任何区别)。

这是我从日志中得到的输出

[19:35:29]:发布工件 (1s) [19:35:29]:[发布工件] 发布路径: [Web/bin=>../../../../inetpub/wwwroot/staging/bin, Web/内容=>../../../../inetpub/wwwroot/staging/Content, Web/obj=>../../../../inetpub/wwwroot/staging/obj, Web/Views=>../../../../inetpub/wwwroot/staging/Views, 网络/媒体=>../../../../inetpub/wwwroot/staging/Media, Web/.aspx=>../../../../inetpub/wwwroot/staging, Web/.asax=>../../../../inetpub /wwwroot/staging,teamcity-info.xml] [19:35:30]: [发布工件] 发送文件 [19:35:32]:构建完成

运行 TeamCity 4.5 的其他一些服务器的日志使用不同的格式,每个发布的工件都有一行,我不确定这是否相关或仅仅是由于不同的日志格式。

一切似乎都在工作,但构建后没有文件放在我的网站文件夹中,我在这里遗漏了什么吗?任何帮助将不胜感激:)

【问题讨论】:

  • 经过一些测试,我意识到相对路径不应该基于结帐目录,但是将其更改为匹配构建代理文件夹(“../”x 8)并没有帮助.
  • 更新:将工件输出到相对路径“输出”时,会创建文件夹并将文件正确复制到其中。问题似乎是由于某种原因,我无法将文件复制到 inetpub/wwwroot/staging 文件夹。

标签: teamcity teamcity-6


【解决方案1】:

我一直使用构建脚本来处理此类过程,因为您使用的是 TC6,因此您应该能够在执行复制/移动的 VS.NET 解决方案构建器之后添加第二个构建步骤。 MSBuild 可能是执行此操作的首选脚本方法,但如果您只需要复制,则可以使用简单的控制台运行程序。使用脚本方法,您应该能够为部署目录使用绝对路径,该路径不应该像相对路径那样脆弱。

【讨论】:

  • 谢谢。听起来是个不错的计划。我将设置一个脚本来处理它并将其作为辅助构建步骤运行。
【解决方案2】:

从 6.0 开始,TeamCity 不允许在服务器的工件目录之外发布工件(出于安全原因)。我认为这是你的情况。

在服务器日志 (TeamCity/logs/teamcity-server.log) 中,应该有一个以“尝试在构建工件目录之外发布工件”开头的相关警告。

如果您不想将文件发布到某个特定位置,您可能应该创建一个单独的构建步骤,通过 FTP 或其他方式将文件发送到所需位置。

您可能还想投票给http://youtrack.jetbrains.net/issue/TW-1558

【讨论】:

    【解决方案3】:

    为什么不看看 Albacorebuild。我用它来控制构建过程、运行测试、创建 ZIP 和 NuGet 包。更多信息和示例在这里:http://daniel.wertheim.se/2011/07/14/continuous-integration-using-teamcity-rake-albacore-github-and-nunit-for-net-%E2%80%93-part-3/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 2012-08-01
      相关资源
      最近更新 更多