如何将 kubectl 任务的输出传递给 Azure Devops 中的下一个任务

How to pass the output from kubectl task to next task in Azure Devops

我正在使用 AKS.I 我正在尝试获取服务的 IP post 通过 devops 我的部署,以便我可以将 IP 传递给 API 管理以进行进一步配置.现在我的任务看起来像这样

               - task: Kubernetes@1
                  inputs:
                    connectionType: 'Kubernetes Service Connection'
                    kubernetesServiceEndpoint: 'string-Conn'
                    namespace: '<appservices>'
                    command: 'get'
                    arguments: 'get services --namespace appservices authsvc --output jsonpath=''{.status.loadBalancer.ingress[0].ip}'''
                    secretType: 'dockerRegistry'
                    containerRegistryType: 'Azure Container Registry'
                  name: 'GetSvc'

当我在本地 运行 命令时,我正在获取负载均衡器的 IP。但是如何将此任务的输出传递给下一个任务呢?以前,当我使用 azure cli 脚本时,我可以将 vso set 变量作为脚本本身的一部分传递,如下所示,但不确定如何将此任务的输出添加到变量中。

内联脚本:|

$something = (az storage container generate-sas --account-name <container> --name armtemplate --permissions r --expiry $(date -u -d "30 minutes" +%Y-%m-%dT%H:%MZ))
                  Write-Host($something) Write-Output("##vso[task.setvariable variable=SasToken;]$something")

我们可以使用日志命令 ##vso[task.setvariable variable=SasToken;]$something"set variables in scripts

但是根据您的描述,我们建议您使用output variable来传递可变IP。例如,假设我们有一个名为 MyTask 的任务,它设置了一个名为 MyVar 的输出变量。我们可以在同一个作业中使用输出。

steps:
- task: MyTask@1  # this step generates the output variable
  name: ProduceVar  # because we're going to depend on it, we need to name the step
- script: echo $(ProduceVar.MyVar) # this step uses the output variable

我遵循了 Amit Ba运行es 建议的方法,因为我不清楚没有变量名的脚本执行分配。我已经使用了 Azure cli 任务和 运行 它。成功了

          - task: AzureCLI@2
              inputs:
                azureSubscription: '<Service-Conn>'
                scriptType: 'pscore'
                scriptLocation: 'inlineScript'
                inlineScript: |
                  az aks get-credentials -n $(clusterName) -g $(clusterRG)
                  $externalIp = (kubectl get -n $(ns) services $(svc) --output jsonpath='{.status.loadBalancer.ingress[0].ip}' )
                  Write-Host($externalIp) Write-Output("##vso[task.setvariable variable=AKSURL;]$externalIp")