我正在将一些秘密从Azure Key Vault导入到Variable Group到CI / CD管道中。
我能够使用Azure Devops UI从KeyVault映射VariableGroup中的必需机密。
在我的管道YAML中,我能够读取和打印那些AzureKeyVault机密的VariableGroup变量。
trigger:
- dev
# define the VM image
pool:
vmImage: "Ubuntu 16.04"
# define variables to use during the build
variables:
- group: SecretVarGroup # it has keyvault variable 'KV_API_KEY'
- group: PublicVarGroup # it has a variable 'API_CLIENTID'
# define the step to export key to env varaiable
steps:
- script: echo $MYSECRETAPIKEY
env:
MYSECRETAPIKEY: $(KV_API_KEY)
## Run the npm build
- script: |
npm run build
displayName: "npm build"
我能够在构建输出日志中看到“ KV_API_KEY”秘密的值打印为***值,我认为它可以使用。我还看到了在构建日志以及节点js process.env对象中打印的API_CLIENTID的值。
我假设变量“ MYSECRETAPIKEY”将在我的节点js process.env对象中可用。但这不可用。
我测试它的方式是在我的节点js项目构建配置中,我有一条print语句可以打印process.env对象。它打印了管道构建代理的所有环境变量,包括我的PUBLICVARGROUP变量“ API_CLIENTID”。但是我在process.env对象中看不到我的秘密变量“ MYSECRETAPIKEY”。
env:
MYSECRETAPIKEY: $(KV_API_KEY)
我认为以上代码会将变量导出到特定的语言处理环境。但事实并非如此。我该如何解决?
答案 0 :(得分:2)
# define the step to export key to env varaiable
steps:
## Run the npm build
- script: |
npm run build
displayName: "npm build"
env:
MYSECRETAPIKEY: $(KV_API_KEY)
看起来像机密的东西在代理程序范围内,以供使用的单个任务和脚本。问题是我有env:在一个单独的临时任务中声明。将其移动到上述代码中脚本声明的同一位置已解决了该问题。