在单独的构建过程中检查文件后,是否可以绕过Gated Check-In构建? TFS 2010

时间:2011-11-08 11:33:38

标签: msbuild tfs2010

我为解决方案设置了2个构建定义,1是每晚触发的每晚构建,另一个是Gated Check-In构建,当开发人员尝试检查源控件中的新更改时将触发该构建。每晚构建使用自定义模板,该模板使用从Ewald Hoffman method略微修改的方法来增加程序集版本。当通过自定义活动签入文件以检查文件时,我得到构建错误:

  

您的办理登机手续无法完成,因为它会影响以下内容   门控构建定义\ Project \ GatedBuld。办理登机手续   你需要对shelveset的构建进行排队   Gated_2011-11-08_09.31.42.6934; DOMAIN \ TFSBuildAccount

目前我还没有办法绕过这个封闭的签到版本(使用* NO_CI *检查评论来阻止CI版本。)

我尝试过为构建服务帐户设置“覆盖签入验证”权限(通过门控构建的安全性),但据我所知,这只会在手动检查代码时阻止门控构建(通过Gated Check-in对话框中显示的复选框)。我正在寻找的是一种在自动检查更改时绕过门控构建的方法

有什么建议吗?

一如既往,感谢您提前提供帮助

2 个答案:

答案 0 :(得分:7)

以编程方式检查更改时,可以创建WorkspaceCheckInParameters对象并将其OverrideGatedCheckIn属性设置为true。以下代码将绕过gated checkin(以及CI):

            var pendingChanges = workspace.GetPendingChanges();
            if (pendingChanges.Any())
            {
                WorkspaceCheckInParameters parameters = new WorkspaceCheckInParameters(pendingChanges, BuildCommonUtil.NoCICheckInComment)
                {
                    OverrideGatedCheckIn = true,
                };
                workspace.CheckIn(parameters);
            }

请注意,您需要授予权限,以绕过执行所有受影响的构建定义的签入的帐户的gated checkin。在这种情况下,它是Nightly版本的构建服务帐户。

答案 1 :(得分:0)

我在Powershell中编写了程序集版本更新代码,找不到更简洁的代码" OverrideGatedCheckIn = true"对于Powershell而我所做的就是将汇编版本文件(SharedAssembly.vb& SharedAssembly.cs)移动到名为SharedAssembly的文件夹中,并将它们排除在考虑GatedCheck-In过程之外。

enter image description here