我正在尝试设置TeamCity来构建和部署ASP.NET MVC应用程序。
我使用TeamCity 4.5在其他服务器上成功运行安装程序,但是新服务器运行的是TeamCity 6,我无法按预期运行它。
TeamCity设法从源代码控制中获取文件,项目(Visual Studio Solution 2008设置为“Build”)按预期构建并输出必要的文件。问题似乎与我的工件路径有关,因为输出文件没有复制到网站文件夹。
我的解决方案包含十几个项目,其中“Web”项目在这种情况下很有趣。构建签出目录是C:\ TeamCity \ buildAgent \ work \ 7da320cebf0ee541,“Web”项目位于C:\ TeamCity \ buildAgent \ work \ 7da320cebf0ee541 \ Web
我已使用以下工件路径设置我的构建配置(相对于checkout目录到包含该网站的文件夹):
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]:[出版文物] 发布路径: [网络/仓=> ../../../../的Inetpub / wwwroot的/分段/ bin中, 网页/内容=> ../../../../的Inetpub / wwwroot的/分段/内容, 网络/ OBJ => ../../../../的Inetpub / wwwroot的/分段/ OBJ, 幅/浏览次数=> ../../../../的Inetpub / wwwroot的/分段/浏览次数, 网络/媒体=> ../../../../的Inetpub / wwwroot的/分段/媒体, Web / .aspx => ../../../../ inetpub / wwwroot / staging,Web / .asax => ../../../ .. / inetpub / wwwroot / staging,teamcity-info.xml] [19:35:30]: [发布工件]发送文件 [19:35:32]:构建完毕
运行TeamCity 4.5的其他一些服务器的日志使用不同的格式,每个工件发布一行,我不确定这是否相关或仅由于不同的日志格式。
一切似乎都在工作,但是在构建之后没有文件放在我的网站文件夹中,我在这里遗漏了什么?任何帮助将不胜感激:)
答案 0 :(得分:1)
我一直使用构建脚本来处理这种过程,因为你正在使用TC6,你应该能够在执行复制/移动的VS.NET解决方案构建器之后添加第二个构建步骤。 MSBuild可能是执行此操作的首选脚本方法,但如果您需要执行的操作是复制,则可以使用简单的控制台运行程序。使用脚本方法,您应该能够使用部署目录的绝对路径,该路径不应该像相对路径那样脆弱。
答案 1 :(得分:1)
自6.0以来,TeamCity不允许在服务器的工件目录之外发布工件(出于安全原因)。我认为这是你的情况。
在服务器日志(TeamCity / logs / teamcity-server.log)中,应该有一个相关的警告,以“尝试在构建工件目录之外发布工件”开始。
如果您不想将文件发布到某个特定位置,您可能应该创建一个单独的构建步骤,该步骤将通过FTP或某些内容将文件发送到所需位置。
答案 2 :(得分:1)
为什么不看看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/