3

我想知道我是否应该在这里发布这个,但后来我在 TFS 上看到了其他类似的帖子,他们没有解决我的问题,所以我决定继续发布它。

我正在尝试修复由前同事设置的 TFS 盒子。到目前为止,除了签入/签出文件之外,我还没有以任何其他身份使用过 TFS。出于本练习的目的,我创建了一个简单的 winforms 项目,其中只有一个表单和一个表单加载时的 hello world 警报,我是试图签入到 TFS。我们启用了门控签入,我们还禁止用户绕过构建验证,因为它可以在下面的红色框中突出显示。

门控签到对话框

现在问题是所有门控签入尝试都失败并出现错误:

Access Denied: User 'myOrgDomain\user.name' needs Override check-in 
validation by build permission for the following build definition(s). DefnName

我得到的消息提示说它是部分成功的 门控登记部分成功

当我打开构建时,我看到了这个 TFS 构建输出

当我在线检查时,我发现解决方案是允许用户通过启用灰色的复选框来绕过验证。我不希望出现这种情况。有没有一种方法可以让绕过验证保持禁用状态,并且仍然可以让我的门控签到工作?

这让我完全被难住了,我无法弄清楚可能出了什么问题。任何关于在我的日志中查看哪里以找出问题所在的指针也可能会有所帮助。日志确实表明构建成功,没有警告或错误。

4

3 回答 3

1

[TestProject]Builders,[TestProject]Administrators & [TestProject]Contributors,我已经拒绝检查,对于 [TestProject]Readers 我把它留空..

由于拒绝会否决任何授权,并且由于几乎每个用户都是 Readers 或 Contributors 组的成员,因此您将遇到麻烦。由于用户只有在明确授予权限时才能绕过签入验证,因此无需设置任何拒绝规则。

所以要解决你的问题:

  • 从这些组中删除拒绝检查。
  • 设置“覆盖签入验证”以允许帐户应该能够绕过您的门控签入构建。

从文档

您可以为 Team Foundation Server 中的权限指定两个显式授权设置:拒绝和允许。还有一个隐式授权,既不将权限设置为允许也不将权限设置为拒绝。此授权是一种隐含的拒绝设置,称为未设置。

于 2012-06-07T12:47:31.183 回答
0

您的设置中发生了一些可疑的事情。对屏幕截图中显示的标志的访问由构建权限“通过构建覆盖签入验证”控制。由于它没有设置为权限,但显然设置为选项,因此您处于死锁状态。

我会尝试临时启用此标志(右键单击“构建”上的团队资源管理器,选择“安全”并为您的用户设置权限),然后复选框应该被启用并且我希望它被选中。我会手动取消选中复选框并让构建运行。然后我会禁用该权限。
希望现在 VS 将保留此选项。

如果这失败了,我会在 MS 中提交一个错误。

于 2012-06-07T10:10:16.927 回答
0

TFS 构建安全对话框

我遇到了你提到的同样的问题。您要设置的安全设置是针对构建本身的,而不是针对 TFS 框上的任何内容。对我有用的是在 Visual Studio 中右键单击构建,然后选择 Security... 选项。然后,我确保我的构建服务帐户可以访问“覆盖构建时的签入验证”权限。这与允许 TFS 用户覆盖签入无关。该消息实际上是关于构建服务用户是否具有覆盖签入的能力。为此,您必须是Project Collection Build Service Accounts组的成员。

我想知道这是否会导致 TFS 每次都覆盖并签入(即使构建失败),所以我故意破坏了我的构建并使用此权限集进行了尝试。它不允许我继续办理登机手续(即适当失败)。

就我而言,我有多个构建。对于我正在使用的解决方案,仅允许“在构建时覆盖签入验证”是不够的。出于某种原因,我必须对所有其他构建做同样的事情。我无法找到有关为什么会这样的文档。

于 2012-06-11T15:00:17.803 回答