设想:
我有一个 TFS 构建 (TFS2008),它有几个目标覆盖:BuildNumberOverrideTarget、AfterGet、BeforeCompileConfiguration、AfterCompileConfiguration、AfterCompile、AfterDropBuild 和 AfterEndToEndIteration。一切正常。
但现在我将所有 CI 移植到 Jenkins 服务器。我使用 MSBuild 插件使用以下参数调用 TFSBuild.proj:
/fileLogger /fileLoggerParameters:LogFile=TFSBuild_DesktopBuild.log;Create;Encoding=UTF-8;verbosity=normal /verbosity:normal
问题描述:
我的问题是只有一些自定义任务正在执行:BeforeCompileConfiguration, AfterCompileConfiguration, AfterCompile。
如您所见,我需要执行 BuildNumberOverrideTarget、AfterGet、AfterDropBuild 和 AfterEndToEndIteration。
似乎只有编译任务和关于它的自定义任务正在执行。从 TFS 触发的构建被视为非桌面构建,而从 Jenkins 触发的构建被视为桌面构建。
我到目前为止所尝试的。
如果我从本地 .cmd 文件运行构建,则会发生相同的行为。所以我认为 IsDesktopBuild 属性有问题。进一步阅读这个msdn 链接给了我阅读时的线索
“仅执行编译和测试(如果已启用)”
. 因此,我尝试自己添加属性以强制使用 DesktopBuild:
/fileLogger /fileLoggerParameters:LogFile=TFSBuild_DesktopBuild.log;Create;Encoding=UTF-8;verbosity=normal /verbosity:normal /property:IsDesktopBuild=true
但是行为是一样的,只执行了任务:BeforeCompileConfiguration、AfterCompileConfiguration、AfterCompile
所以我的问题是双重的:
- 任何人都知道如何从命令行强制桌面构建?(似乎/property:IsDesktopBuild=true还不够)
- 如果 IsDesktopBuild 不是问题,关于为什么某些自定义任务没有触发的线索有什么想法吗?