如何在不创建任务组参数的情况下在任务组中使用密钥库密钥

时间:2020-07-31 18:17:29

标签: azure azure-devops azure-pipelines azure-keyvault

我在Azure DevOps中有一个任务组,该任务组执行以下任务(以及其他任务):

1-从密钥库中读取机密

enter image description here

2-将应用程序的设置设置/更新为密钥库中的机密

enter image description here

[
   {
    "name": "Foo",
    "value": "$(FooKeyVaultKey)",
    "slotSetting": false
   }
]

在执行上述任务的任务组中,我想要的唯一参数是密钥库的名称,该密钥库将从中获取秘密。由于第二个任务使用变量(由任务1设置),因此该任务组将创建一个名为“ FooKeyVaultKey”的新参数。

我尝试以不同的方式访问变量,但只能使用括号。

$(FooKeyVaultKey) - works, but creates parameter
${{FooKeyVaultKey}} - doesn't work
${FooKeyVaultKey} - doesn't work
$[FooKeyVaultKey] - doesn't work

2 个答案:

答案 0 :(得分:1)

简单的技巧是使用嵌套在变量表达式中的空白表达式(Microsoft称之为宏语法):

$($()foo)

这样就不会为任务组创建参数。

编辑: 我注意到一些不一致的行为,有时应用程序配置会被设置为字面$($()foo)

答案 1 :(得分:0)

这是不可能的。这是用the documentation

编写的

基础任务中的所有“ $(vars)”(不包括预定义变量)将作为新创建的任务组的必需参数浮出水面。

例如,假设您有一个任务输入$(foobar),您不想对其进行参数化。但是,在创建任务组时,任务输入将转换为任务组参数'foobar'。现在,您可以将任务组参数'foobar'的默认值提供为$(foobar)。这样可以确保在运行时,展开的任务获得与预期相同的输入。