【问题标题】:Can I bypass Gated Check-In build after checking a file in during a separate build process? TFS 2010在单独的构建过程中签入文件后,我可以绕过 Gated Check-In 构建吗? TFS 2010
【发布时间】:2017-07-13 01:47:40
【问题描述】:

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

您的签到无法完成,因为它会影响以下内容 门控构建定义\Project\GatedBuld。完成您的登机手续 您将需要排队构建搁置集 Gated_2011-11-08_09.31.42.6934;DOMAIN\TFSBuildAccount。

目前我还没有找到绕过此门控签入构建的方法(使用 *NO_CI* 签入注释来阻止 CI 构建)。

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

有什么建议吗?

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

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    当您以编程方式签入您的更改时,您可以创建一个WorkspaceCheckInParameters 对象并将其 OverrideGatedCheckIn 属性设置为 true。以下代码将绕过门控签入(以及 CI):

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

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

    【讨论】:

      【解决方案2】:

      我在 Powershell 中编写了程序集版本更新代码,但找不到用于 Powershell 的更简洁的代码“OverrideGatedCheckIn = true”,我所做的只是将程序集版本文件(SharedAssembly.vb 和 SharedAssembly.cs)移动到名为 SharedAssembly 的文件夹中并将他们排除在 GatedCheck-In 流程之外。

      【讨论】:

        猜你喜欢
        • 2017-08-24
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 2012-04-06
        • 1970-01-01
        • 2023-03-18
        • 2011-02-21
        • 1970-01-01
        相关资源
        最近更新 更多