如何将变量传递到“ az管道变量-组变量创建”命令

时间:2019-09-17 19:26:57

标签: devops azure-cli az

我正在尝试使用“ az管道变量-组变量创建...”命令来创建引用不同变量的变量。例如

az pipelines variable-group variable create --project MyTestProject -- 
group-id 15 --name ‘ApplicationName’ --value 'TestApp-$(env)' 

其中变量“ env”在同一项目库的变量组中定义。

当我运行上面的命令时,它给出了错误:

“Failed to load python executable” “exit /b 1”. 

尽管生成了错误,但仍创建了变量;在上面的示例中,变量'ApplicationName'的值为'TestApp-$(env'),后括号字符“)”丢失了,似乎是引起问题的原因。

美元符号“ $”和/或左括号字符“(”在不使用右括号“)”的情况下不会产生任何错误。

我尝试用反斜杠“ \”和脱字号“`”字符转义右括号,但是找不到任何可以创建所需变量值“ TestApp-$(env)”的组合。

有人可以告诉我如何转义右方括号,以便在变量组中正确创建变量。

我正在运行以下版本的az:

azure-cli                         2.0.73
command-modules-nspkg               2.0.3
core                              2.0.73
nspkg                              3.0.4
telemetry                          1.0.3
Extensions:
azure-devops                      0.12.0

Python (Windows) 3.6.6 

非常感谢,

加里

3 个答案:

答案 0 :(得分:0)

这取决于您的操作系统和工具。

例如,在Windows OS中,您可以使用%variable_name%获取环境变量。因此,以下内容将是正确的:

az pipelines variable-group variable create --project keyvault --group-id 1 --name "ApplicationName" --value "TestApp-%java_home%"

enter image description here

但是,在PowerShell中,您可以使用“ $ env:variable_name”获得环境。因此,以下内容将是正确的:

az pipelines variable-group variable create --project keyvault --group-id 1 --name "ApplicationName2" --value "TestApp-$($env:java_home)"

enter image description here


更新

因此,在Azure Pipeline中,可以按以下方式使用组变量:


pool: 
  name: Hosted VS2017
  demands:
  -  msbuild
  -  visualstudio
  -  vstest

variables:
  - group: vargroup

steps:
- task: AzureCLI@1
  inputs:
    azureSubscription: 'CSP Azure (e5b0fcfa-e859-43f3-8d84-5e5fe29f4c68)'
    scriptLocation: 'inlineScript'
    inlineScript: |
      echo the variable var1:%var1%

我有一个变量组:

enter image description here

您会看到:echo the variable var1:%var1%将是echo the variable var1:value1

enter image description here

答案 1 :(得分:0)

我终于设法弄清楚了如何对一个变量本身的名称包含不同的变量名称进行转义。通过调用az cli命令并将变量值用双引号和单引号引起来,可以在DevOps中正确创建变量:

az管道变量组变量create --project MyTestProject-group-id 15 --name'ApplicationName'--value'“ TestApp-$(env)”'

DevOps-LibraryVariable-screenshot

答案 2 :(得分:0)

作为对该主题的进一步扩展,我需要将值作为变量传递。我的资料来自一个键值对。在这种情况下,我使用了以下内容。

$key = $var.Key
$value = '"{0}"' -f $var.Value
    
az pipelines variable-group variable update --group-id $groupId --org $org --project $project `
--name $key --value $value