TFS 发布管理中的自定义变量
Custom variables in TFS Release Management
我正在使用 TFS 2017.1 构建和发布功能。
在我的发布定义中,我有几个发布变量,我需要在我的 PowerShell 任务(在远程机器上执行)中引用它们。到目前为止,我已经尝试了以下选项,但无法正常工作。
添加了执行 PowerShell 任务以将发布变量存储到环境变量中:
$releaseVaraiables = Get-ChildItem Env: | Where-Object { $_.Name -like "ACL_*" }
Write-Host "##vso[task.setvariable variable=aclVariables]$releaseVaraiables"
添加了在远程机器上执行 PowerShell 任务:
这里我无法读取环境变量(可能是因为这是远程机器任务?)
Write-Verbose "problem reading $env:aclVariables" -Verbose
然后我尝试将环境变量作为参数传递,但这也不起作用
param
(
$RbacAccessTokenParams
)
$RbacAccessTokenParams.GetEnumerator() | % {$_.Name}
$RbacAccessTokenParams | % {
Write-Verbose "variable is $_" -Verbose
Write-Verbose "name is $_.Name" -Verbose
Write-Verbose "value is $_.Value" -Verbose
}
这就是我作为参数传递的方式
-RbacAccessTokenParams $(aclVariables)
我在这里缺少什么?
非机密变量已存储为环境变量;您无需执行任何特殊操作即可访问它们。您可以使用 $ENV:VariableName
访问它们。句点替换为下划线。所以 Foo.Bar
将是 $env:FOO_BAR
。
秘密变量应该传递给需要它们的脚本。
但是,这仅适用于代理。如果您使用 PowerShell On Target Machines
任务来 运行 脚本,您需要将变量作为参数传递给脚本。没有办法解决这个问题,除非您选择使用部署组。
或者,更好的是,遵循配置即代码约定,并将特定于应用程序的值存储在脚本读取的源代码控制配置文件中,这样您就不会与部署编排平台紧密耦合。
我已经用 TFS 2017.3.1 在我这边测试了你的场景,当将环境变量作为参数传递时它可以工作。您可以先升级您的 TFS,然后再试一次。附上我的步骤供大家参考:
1.
2.
3.
4.
我正在使用 TFS 2017.1 构建和发布功能。 在我的发布定义中,我有几个发布变量,我需要在我的 PowerShell 任务(在远程机器上执行)中引用它们。到目前为止,我已经尝试了以下选项,但无法正常工作。
添加了执行 PowerShell 任务以将发布变量存储到环境变量中:
$releaseVaraiables = Get-ChildItem Env: | Where-Object { $_.Name -like "ACL_*" }
Write-Host "##vso[task.setvariable variable=aclVariables]$releaseVaraiables"
添加了在远程机器上执行 PowerShell 任务:
这里我无法读取环境变量(可能是因为这是远程机器任务?)
Write-Verbose "problem reading $env:aclVariables" -Verbose
然后我尝试将环境变量作为参数传递,但这也不起作用
param
(
$RbacAccessTokenParams
)
$RbacAccessTokenParams.GetEnumerator() | % {$_.Name}
$RbacAccessTokenParams | % {
Write-Verbose "variable is $_" -Verbose
Write-Verbose "name is $_.Name" -Verbose
Write-Verbose "value is $_.Value" -Verbose
}
这就是我作为参数传递的方式
-RbacAccessTokenParams $(aclVariables)
我在这里缺少什么?
非机密变量已存储为环境变量;您无需执行任何特殊操作即可访问它们。您可以使用 $ENV:VariableName
访问它们。句点替换为下划线。所以 Foo.Bar
将是 $env:FOO_BAR
。
秘密变量应该传递给需要它们的脚本。
但是,这仅适用于代理。如果您使用 PowerShell On Target Machines
任务来 运行 脚本,您需要将变量作为参数传递给脚本。没有办法解决这个问题,除非您选择使用部署组。
或者,更好的是,遵循配置即代码约定,并将特定于应用程序的值存储在脚本读取的源代码控制配置文件中,这样您就不会与部署编排平台紧密耦合。
我已经用 TFS 2017.3.1 在我这边测试了你的场景,当将环境变量作为参数传递时它可以工作。您可以先升级您的 TFS,然后再试一次。附上我的步骤供大家参考:
1.
2.
3.
-
4.