如何在GitHub Actions中用Azure CLI传递Key Vault密钥至后续步骤?
在GitHub Actions中使用Azure CLI获取Key Vault密钥并传递到后续步骤
单密钥传递示例
如果只需要获取单个密钥,可在Azure CLI步骤中通过$GITHUB_OUTPUT设置输出变量,后续步骤直接引用:
- name: 获取Key Vault密钥 id: get-secret uses: azure/CLI@v1 with: inlineScript: | # 获取密钥值并去除引号 SECRET_VALUE=$(az keyvault secret show --vault-name MyVaultName --name MySecret --query value -o tsv) # 将密钥写入GitHub Actions输出变量 echo "my-secret=$SECRET_VALUE" >> $GITHUB_OUTPUT # 后续步骤引用密钥 - name: 使用密钥 run: | echo "获取到的密钥是: ${{ steps.get-secret.outputs.my-secret }}"
多密钥传递示例(对应原弃用Action的场景)
如果需要同时获取多个密钥(比如容器用户名和密码),可以依次获取并设置多个输出变量:
- name: 获取多个Key Vault密钥 id: get-secrets uses: azure/CLI@v1 with: inlineScript: | # 获取容器用户名 USERNAME=$(az keyvault secret show --vault-name containervault --name containerUsername --query value -o tsv) # 获取容器密码 PASSWORD=$(az keyvault secret show --vault-name containervault --name containerPassword --query value -o tsv) # 将两个密钥写入输出变量 echo "containerUsername=$USERNAME" >> $GITHUB_OUTPUT echo "containerPassword=$PASSWORD" >> $GITHUB_OUTPUT # 后续Docker登录步骤引用密钥 - uses: azure/docker-login@v1 with: login-server: myregistry.azurecr.io username: ${{ steps.get-secrets.outputs.containerUsername }} password: ${{ steps.get-secrets.outputs.containerPassword }}
关键说明
- 使用
-o tsv参数可以让Azure CLI输出不带引号的纯文本值,避免后续引用时处理引号问题。 - 必须给Azure CLI步骤设置
id,后续步骤才能通过steps.<步骤id>.outputs.<变量名>引用输出的密钥。 $GITHUB_OUTPUT是GitHub Actions官方推荐的设置输出变量的方式,替代了旧的::set-output命令。
内容的提问来源于stack exchange,提问作者Sushil
相关产品推荐
相关产品推荐

