我正在配置一个TFS2017(更新3)vNext版本,该版本具有一些内部var,其值不应在队列时间修改(这些var是使用默认值创建的,并且未选中“ settable at queue time”标志) )。
出现问题是由于在队列时间上有一个“添加新变量”按钮(即使对于没有权限修改构建定义的用户也是如此)。如果这些用户中的一些排队新构建,并添加名称与已定义的var名称匹配的新变量,则该var的值将被覆盖! (即使无法在队列时间设置)。这为具有队列构建许可权的每个用户提供了“破解”构建的能力(这意味着重要的安全问题,因为构建代理会将此值用于特权操作)
隐藏此按钮的任何方法或解决该问题的任何方法?
谢谢。
答案 0 :(得分:3)
目前,无法在队列时间隐藏“添加变量”按钮的方法/设置。
然后我发布了一个建议使用此功能的用户语音Add permission to add variables at build queue time for TFS and VSTS。您可以投票并跟进。
此外,您可以使用以下任一变通办法来避免变量被覆盖(例如避免值var
的变量myvar
被覆盖)在队列时间 strong>:
在构建定义的开头添加一个PowerShell脚本,并在PowerShell脚本中设置变量var的值:
Write-Host "##vso[task.setvariable variable=var]myvar"
因此,即使有人在队列时间添加相同的变量var
,该值也不会在构建过程中被覆盖。变量var的值始终为myvar
。
由于没有权限编辑变量定义的用户,如果您将var
设置为可在队列时间设置,则该用户只能查看变量var,而不能更改变量值。
即使用户添加了变量,他/她也无法再添加名称为var
的变量。
答案 1 :(得分:1)
经过一些测试,似乎最适合我们当前需求的解决方法是#1(powershell脚本)。谢谢玛丽娜:)
无论如何,在我们的环境中无法实现#2,因为没有对构建定义的编辑权限的用户可以在队列时间vars上修改可设置的变量。 TFS2017是否对此有任何特殊行为,或者我什么都没想到?
致谢