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