团队城市构建失败,因为EF代码迁移。

5
我的TeamCity构建失败了,因为我有一个项目在其中有2个EF Code Migration配置。
从构建日志中可以看到:
[12:39:58]Checking for changes
[12:39:58]Collecting changes in 1 VCS root (1s)
[12:40:00]Clearing temporary directory: C:\TeamCity\buildAgent2\temp\buildTmp
[12:40:00]Publishing internal artifacts
[12:40:00]Checkout directory: C:\TeamCity\buildAgent2\work\1679b8b30e00ad0
[12:40:00]Updating sources: server side checkout (2s)
[12:40:03]Step 1/8: Gulp (Command Line)
[12:40:03]Step 2/8: Nuget Package Refresh (NuGet Installer) (3s)
[12:40:06]Step 3/8: Compile (MSBuild) (21s)
[12:40:27]Step 4/8: Unit Tests (NUnit) (33s)
[12:41:01]Step 5/8: Transform Files (Powershell) (2s)
[12:41:03]Step 6/8: Deployment Build on XXXXX Live (MSBuild) (25s)
[12:41:29]Step 7/8: Deploy Database (Powershell) (5s)
[12:41:34]Step 8/8: Deploy Portal.Hub (Powershell) (33s)
[12:42:08]Publishing artifacts
[12:42:08][Publishing artifacts] Collecting files to publish:     [C:\TeamCity\buildAgent2\temp\buildTmp\nuget5954880593924726328packages\nuget.xml => .teamcity/nuget]
[12:42:08][Publishing artifacts] Publishing using [WebPublisher]
[12:42:08][Publishing artifacts] Publishing using [ArtifactsCachePublisher]
[12:42:08][Publishing artifacts] Artifacts path 'C:/TeamCity/buildAgent2/temp/buildTmp/nuget5954880593924726328packages/nuget.xml' not found
[12:42:08]Reverting patched assembly versions
[12:42:08][Reverting patched assembly versions] Restoring C:\TeamCity\buildAgent2\work\1679b8b30e00ad0\src\Portal.Api\Properties\AssemblyInfo.cs
[12:42:08][Reverting patched assembly versions] Restoring C:\TeamCity\buildAgent2\work\1679b8b30e00ad0\src\Portal.Common\Properties\AssemblyInfo.cs
[12:42:08][Reverting patched assembly versions] Restoring C:\TeamCity\buildAgent2\work\1679b8b30e00ad0\src\Portal.Data\Properties\AssemblyInfo.cs
[12:42:08][Reverting patched assembly versions] Restoring C:\TeamCity\buildAgent2\work\1679b8b30e00ad0\src\Portal.Hub\Properties\AssemblyInfo.cs
[12:42:08][Reverting patched assembly versions] Restoring C:\TeamCity\buildAgent2\work\1679b8b30e00ad0\src\Portal.Manager\Properties\AssemblyInfo.cs
[12:42:08][Reverting patched assembly versions] Restoring C:\TeamCity\buildAgent2\work\1679b8b30e00ad0\src\Portal.Managers\Properties\AssemblyInfo.cs
[12:42:08][Reverting patched assembly versions] Restoring C:\TeamCity\buildAgent2\work\1679b8b30e00ad0\src\Portal.SignalR\Properties\AssemblyInfo.cs
[12:42:08][Reverting patched assembly versions] Restoring C:\TeamCity\buildAgent2\work\1679b8b30e00ad0\src\Portal.Tests\Properties\AssemblyInfo.cs
[12:42:08]Publishing internal artifacts
[12:42:08][Publishing internal artifacts] Sending using WebPublisher
[12:42:08][Publishing internal artifacts] Sending using ArtifactsCachePublisher
[12:42:08]Build failure condition: There was an error reported in one of the build steps.
[12:42:08]Build failure condition cause message: ERROR: More than one migrations configuration type was found in the assembly 'Portal.Data'. Specify the name of the one to use. (show original message)
[12:42:08]Build finished

注意:仅红色(失败)是“构建完成”上面的最后两行
我没有运行迁移,也看不到团队城市或发布配置文件中会尝试执行此操作的任何步骤。
我不想将我的配置拆分为单独的项目,我只想阻止TeamCity尝试运行它们。
我的构建步骤如下:
1/8 Gulp - 最小化js文件
2/8 NuGet Installer - 更新解决方案中的NuGet引用
3/8 MSBuild - .NET 4.5 x86编译
4/8 NUnit - 运行单元测试
5/8 Powershell - 运行脚本以操作Windows服务的app.config文件
6/8 MSBuild - 使用发布配置文件部署网站
7/8 Powershell - 部署数据库的脚本
8/8 Powershell - 部署Windows服务的脚本
发布配置文件:连接选项卡上的验证连接按钮在设置页面上正常工作,其中列出了几个数据库,但没有连接字符串或“在运行时使用此连接字符串”的选项被选中。其中一个旁边有一个信息标签:“为了发布Code First Model,应使用Code First Migrations”。
我们有其他项目的几乎相同的构建配置,它们可以正常工作。
谢谢

你能提供更多关于构建步骤和发布配置文件的详细信息吗?在你的.csproj文件中是否有任何预/后构建事件?你能展示TeamCity构建日志中的原始异常堆栈吗? - Matt
项目文件中没有构建事件。TeamCity 中没有堆栈跟踪 - 所有构建步骤都有效,并且上述输出位于底部。我将在问题中更新更多有关构建步骤的信息。 - SturmUndDrang
你能告诉我是哪个构建步骤产生了错误吗?如果所有的构建步骤都成功完成了,那么就说明某些配置不正确。您能详细说明一下自定义PowerShell步骤吗?目前这有点像大海捞针 - 除非我能完全理解正在执行的内容,否则我认为我无法为您提供任何价值。例如,Deploy Windows服务是否安装并启动了它? - Matt
如果所有步骤都通过了,但是构建配置存在自定义失败条件,您能否显示生成“ERROR”输出的构建步骤的详细输出(我假设您已经显示了最少的细节以隐藏任何敏感信息)? - Matt
我已经将完整的构建日志放在这里http://dropcanvas.com/aqqh3 - 我看不到任何失败。 - SturmUndDrang
1个回答

2

从日志中看,似乎您正在尝试在第7步“部署数据库”中应用EF迁移。

Highlight

这就是配置异常抛出的地方。

如果目标是阻止TeamCity运行它们,则禁用该步骤即可。

希望这可以帮助您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接