作为TFS 2017 R2 CI构建定义的一部分,我正在尝试将来自一个分支的提交合并到另一个分支。如果您可以想象添加测试环境中的错误修复,那么作为build def的一部分,我会运行一些git命令。
分支机构启用了策略,这些策略实质上需要请求提交。为了使此流正常工作,我需要将构建代理从分支策略中免除。
我的build def是一个单独的PowerShell脚本,它运行“whoami”,然后是git合并,然后是git推送。whoami返回一个用户:
域\管理员帐户
管理帐户具有以下权限属性:
- 收款级别:服务帐户组的成员
- 团队项目级别:服务帐户组是生成管理员组的成员
- 存储库级别:Build Administrators组将“免除策略强制”权限设置为“允许”。
-
- 个人级别:如果我添加此用户并跟踪其免除策略强制权限,则它们将显示“继承的允许”。见下图。
-

但是,当我尝试将提交推送到分支时,我会得到tfs错误:
tf402455:push to this branch are not permitted;you must use a pull request to update this branch.
如果这些帐户权限是正确的,并且当我执行这些脚本时,它们将此帐户显示为正在使用,那么我缺少什么?是否有一些黑匣子逻辑来说明哪些账户实际执行了我需要从政策执行中免除的操作?
分支机构启用了策略,这些策略实质上需要请求提交。为了使这个流程工作,我需要从分支策略中免除构建代理。
我的build def是一个单独的PowerShell脚本,它运行“whoami”,然后是git合并,然后是git推送。whoami返回一个用户:
domain\adminAccount
管理帐户具有以下权限属性:
- 收款级别:服务帐户组的成员
- 团队项目级别:服务帐户组是生成管理员组的成员
- 存储库级别:构建管理员组将“免除策略强制”权限设置为允许。
- 个人级别:如果我添加此用户并跟踪其免除策略强制权限,则它们将显示“继承的允许”。见下图。

但是,当我尝试将提交推送到分支时,会得到tfs错误:
TF402455: Pushes to this branch are not permitted; you must use a pull request to update this branch.
如果这些帐户权限是正确的,并且当我执行这些脚本时,它们将此帐户显示为正在使用,那么我缺少什么?什么账户有黑匣子逻辑吗事实上执行我需要豁免的政策?