TFS build vNext允许在队列时间更改不可设置的变量

时间:2018-08-03 08:12:52

标签: azure-devops tfsbuild tfs2017

我正在配置一个TFS2017(更新3)vNext版本,该版本具有一些内部var,其值不应在队列时间修改(这些var是使用默认值创建的,并且未选中“ settable at queue time”标志) )。

出现问题是由于在队列时间上有一个“添加新变量”按钮(即使对于没有权限修改构建定义的用户也是如此)。如果这些用户中的一些排队新构建,并添加名称与已定义的var名称匹配的新变量,则该var的值将被覆盖! (即使无法在队列时间设置)。这为具有队列构建许可权的每个用户提供了“破解”构建的能力(这意味着重要的安全问题,因为构建代理会将此值用于特权操作)

隐藏此按钮的任何方法或解决该问题的任何方法?

谢谢。

2 个答案:

答案 0 :(得分:3)

目前,无法在队列时间隐藏“添加变量”按钮的方法/设置。

然后我发布了一个建议使用此功能的用户语音Add permission to add variables at build queue time for TFS and VSTS。您可以投票并跟进。

此外,您可以使用以下任一变通办法来避免变量被覆盖(例如避免值var的变量myvar被覆盖)在队列时间 strong>:

enter image description here

解决方法1:使用PowerShell重置变量

在构建定义的开头添加一个PowerShell脚本,并在PowerShell脚本中设置变量var的值:

Write-Host "##vso[task.setvariable variable=var]myvar"

enter image description here

因此,即使有人在队列时间添加相同的变量var,该值也不会在构建过程中被覆盖。变量var的值始终为myvar

enter image description here

解决方法2:将变量var设置为可在队列时间设置

由于没有权限编辑变量定义的用户,如果您将var设置为可在队列时间设置,则该用户只能查看变量var,而不能更改变量值。

enter image description here

即使用户添加了变量,他/她也无法再添加名称为var的变量。

enter image description here

答案 1 :(得分:1)

经过一些测试,似乎最适合我们当前需求的解决方法是#1(powershell脚本)。谢谢玛丽娜:)

无论如何,在我们的环境中无法实现#2,因为没有对构建定义的编辑权限的用户可以在队列时间vars上修改可设置的变量。 TFS2017是否对此有任何特殊行为,或者我什么都没想到?

致谢