在TFS的多个发布任务中设置和使用环境变量
Set and use enviroment variables in multiple release tasks in TFS
我有一个使用 TFS 构建和发布的 Web 应用程序。发布定义包含一个任务组,其中包含部署 Web 应用程序的所有必要步骤。
我想做的是确定一个特定的值并将其存储在一个变量中,以便稍后在其他发布任务的发布过程中使用。
此刻,任务组中的第一步是 Powershell 任务,它确定必要的值并将其存储在环境变量中,使用:
Write-Output ("##vso[task.setvariable variable=MyVar;]$var")
当我在下一个任务(同样是 PowerShell 任务)中使用此环境变量时,它按预期完美运行:
Write-Host "Doing stuf for: $env:MyVar"
当我想将变量用作(多个)不同任务的参数时,它变得很奇怪。当环境变量没有默认值时,将使用第一个 PowerShell 任务的计算值,一切正常。但是 TFS 不喜欢环境变量没有默认值并强制提供默认值,然后才能再次保存发布定义。当我提供默认值时,使用变量作为任务参数的任务使用默认值,而不是计算值。我希望应该使用计算值,因为第二个 PowerShell 任务确保正确存储计算值。
所以,我看到的症状:
- 当不提供默认值时,脚本中的代码以及任务参数使用计算值
- 提供默认值时,脚本中的代码使用计算值,任务参数使用默认值
是我做错了什么,还是我使用的环境变量有误,我应该使用不同的方法吗?
据我了解,您想在任务组中的 powershell-task 中定义您的变量,但您也被迫在环境变量中提供一个值,导致变量有时具有在 powershell 中设置的值,有时具有在环境变量中定义的值。
解决方案 是只提供环境变量本身的名称,因此它总是被您在 powershell 任务中设置的值覆盖。
来源:https://blogs.msdn.microsoft.com/harshillodhi/2016/11/29/vststfs-understanding-task-groups-and-its-various-use-cases-with-setvariable-logging-command/
在 header“什么是 setvariable 日志记录命令以及如何将其与任务组一起使用?”下,引用了三个场景。听起来第二种情况可能符合您的需求。
我有一个使用 TFS 构建和发布的 Web 应用程序。发布定义包含一个任务组,其中包含部署 Web 应用程序的所有必要步骤。
我想做的是确定一个特定的值并将其存储在一个变量中,以便稍后在其他发布任务的发布过程中使用。
此刻,任务组中的第一步是 Powershell 任务,它确定必要的值并将其存储在环境变量中,使用:
Write-Output ("##vso[task.setvariable variable=MyVar;]$var")
当我在下一个任务(同样是 PowerShell 任务)中使用此环境变量时,它按预期完美运行:
Write-Host "Doing stuf for: $env:MyVar"
当我想将变量用作(多个)不同任务的参数时,它变得很奇怪。当环境变量没有默认值时,将使用第一个 PowerShell 任务的计算值,一切正常。但是 TFS 不喜欢环境变量没有默认值并强制提供默认值,然后才能再次保存发布定义。当我提供默认值时,使用变量作为任务参数的任务使用默认值,而不是计算值。我希望应该使用计算值,因为第二个 PowerShell 任务确保正确存储计算值。
所以,我看到的症状:
- 当不提供默认值时,脚本中的代码以及任务参数使用计算值
- 提供默认值时,脚本中的代码使用计算值,任务参数使用默认值
是我做错了什么,还是我使用的环境变量有误,我应该使用不同的方法吗?
据我了解,您想在任务组中的 powershell-task 中定义您的变量,但您也被迫在环境变量中提供一个值,导致变量有时具有在 powershell 中设置的值,有时具有在环境变量中定义的值。
解决方案 是只提供环境变量本身的名称,因此它总是被您在 powershell 任务中设置的值覆盖。
来源:https://blogs.msdn.microsoft.com/harshillodhi/2016/11/29/vststfs-understanding-task-groups-and-its-various-use-cases-with-setvariable-logging-command/ 在 header“什么是 setvariable 日志记录命令以及如何将其与任务组一起使用?”下,引用了三个场景。听起来第二种情况可能符合您的需求。