Chr*_*ris 8 azure azure-devops azure-pipelines azure-pipelines-yaml
我正在尝试循环访问 Azure DevOps YAML 管道中的用户定义变量。
变量已通过 UI 创建:
在我正在使用的 YAML 管道代码下方:
trigger:
- dev
- main
pr:
- dev
pool:
vmImage: ubuntu-latest
stages:
- stage:
jobs:
- job: TestVars
steps:
- ${{ each var in variables }}:
- script: |
echo ${{ var.key }}
echo ${{ var.value }}
displayName: ${{ var.key }}
Run Code Online (Sandbox Code Playgroud)
当运行上述管道时,仅列出系统和构建变量(例如system、system.hostType、build.queuedBy等)。
任何循环用户定义变量的帮助将不胜感激。
不幸的是,没有成功获取 UI 中定义的变量。但是,如果您的变量不是机密,您可以将它们带入 YAML,它们将显示在循环中。
- stage:
variables:
myyamlvar: 1000 # this will show up in the loop
jobs:
- job: TestVars
steps:
- ${{ each var in variables }}:
- script: |
echo ${{ var.key }}
echo ${{ var.value }}
displayName: ${{ var.key }}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用运行时构造列出变量,而不是使用编译时表达式,例如:
- job: TestRuntimeVars
steps:
- script: |
for var in $(compgen -e); do
echo $var ${!var};
done
Run Code Online (Sandbox Code Playgroud)
这将列出所有变量,包括 UI 中定义的变量。
从您提供的 Microsoft 文档链接中,它指定:
“与普通变量不同,它们不会自动解密为脚本的环境变量。您需要显式映射秘密变量。”
但是,一种解决方法可能是运行 azure cli 任务并使用获取管道变量az pipelines variable list
假设您的目的是获取实际值,在这种情况下这可能还不够。话虽如此,即使您没有在其他管道中使用变量组,您也应该考虑使用它们,因为该组可以链接到 Azure KeyVault并将机密映射为变量。您可以将敏感值存储在 KeyVault 中,并将其链接到变量组,该变量组可以像管道中的常规变量一样使用。
或者,您可以直接从AzureKeyVault 管道任务访问 KeyVault 机密。
| 归档时间: |
|
| 查看次数: |
13724 次 |
| 最近记录: |