gpt4 book ai didi

azure - 使用 AzureCLI@2 的输出作为 Azure DevOps Pipeline 中的变量

转载 作者:行者123 更新时间:2023-12-04 15:38:27 25 4
gpt4 key购买 nike

我的 git 项目根目录中有一个 azure-pipelines.yml 文件。在此文件中,我想在下一个任务中使用一个任务的输出作为变量。我的任务

- task: AzureCLI@2
displayName: 'List info on read policy in DEV'
name: myOutput
inputs:
azureSubscription: mySub
scriptType: ps
scriptLocation: inlineScript
inlineScript: az servicebus topic authorization-rule keys list --resource-group myRG --namespace-name mySB --topic-name myTopic --name Listen

在 powershell 中运行此 az 命令时,我得到以下返回:

{
"aliasPrimaryConnectionString": null,
"aliasSecondaryConnectionString": null,
"keyName": "Listen",
"primaryConnectionString": "Endpoint=sb://someKey",
"primaryKey": "somePrimaryKey",
"secondaryConnectionString": "Endpoint=sb://another key",
"secondaryKey": "someSecondaryKey"
}

我也在管道的日志中得到了这个输出。我确实预料到了,根据documentation以便能够在下一步中使用它。例如:

- script: echo $(myOutput.primaryConnectionString)

日志给我的不是获取primaryConnectionString的值:

Starting: CmdLine
==============================================================================
Task : Command line
Description : Run a command line script using Bash on Linux and macOS and cmd.exe on Windows
Version : 2.151.2
Author : Microsoft Corporation
Help : https://learn.microsoft.com/azure/devops/pipelines/tasks/utility/command-line
==============================================================================
Generating script.
Script contents:
echo $(myOutput.primaryConnectionString)
========================== Starting Command Output ===========================
"C:\windows\system32\cmd.exe" /D /E:ON /V:OFF /S /C "CALL "d:\a\_temp\3d1130bd-f7f7-4e30-8ae2-31e6f9d0800e.cmd""
$(myOutput.primaryConnectionString)
Finishing: CmdLine

为什么变量名没有替换为primaryConnectionString的值?

最佳答案

在带有 shell 的 Linux 上,你可以这样做:

- task: AzureCLI@2
displayName: 'List info on read policy in DEV'
name: myOutput
inputs:
azureSubscription: mySub
scriptType: ps
scriptLocation: inlineScript
inlineScript: |
output=$(az servicebus topic authorization-rule keys list --resource-group myRG --namespace-name mySB --topic-name myTopic --name Listen)
echo $output | jq .
echo "##vso[task.setvariable variable=testvar;isoutput=true]$output"

echo $output | jq . 确保命令的输出仍然包含在日志中。

稍后可以按如下方式访问内容:

- task: Bash@3
displayName: 'Do something with the variable'
inputs:
targetType: 'inline'
script: |
echo "$(myOutput.testvar)"
the_id="$(echo $(myOutput.testvar) | jq -r '.id')"

(假设代理上安装了 jq 的发行版。)

关于azure - 使用 AzureCLI@2 的输出作为 Azure DevOps Pipeline 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58933351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com