我是 Azure DevOps 的新手,所以我正在努力解決有關變數的基本問題。希望任何人都可以幫我一把。
基本上,我的發布管道有一個名為“Job 1”的作業。它有 2 個任務:
任務 1:在 AKS 群集中部署容器并通過內部 LoadBalancer 公開它。
steps:
- task: Kubernetes@1
displayName: Deployment
inputs:
connectionType: 'Azure Resource Manager'
azureSubscriptionEndpoint: 'MY-SUBSCRIPTION'
azureResourceGroup: 'MY-RESOURCEGROUP
kubernetesCluster: 'MY-AKS-CLUSTER'
namespace: 'MY-NAMESPACE'
command: apply
useConfigurationFile: true
configuration: '$(System.DefaultWorkingDirectory)/_TEST/deployment.yaml'
注意:我選中了啟用輸出變數功能輸出框的選項。
任務 2:在 API 管理中創建和配置 API,將內部 LoadBalancer 設定為后端。
任務 1 通過其輸出 json 檔案為我提供了內部 LoadBalancer 的 IP 地址。 輸出json檔案
我想獲取該 IP 地址并在任務 2 中使用它,該任務運行以下命令:
az apim api create --service-name $(apimanagement) -g $(apim-resourcegroup) --api-id $(apiname) --path $(apiname) --display-name $(apiname) --service-url http://_LBIPADDRESS_/openapi.json --subscription-key-required false
我的問題:如何在 --service-url 引數中進行此參考?
任何建議將不勝感激。謝謝!
最好的問候,大衛
uj5u.com熱心網友回復:
Kubernetes 任務有一個輸出變數,在您的情況下稱為deployment.KubectlOutput,它應該包含您提到的 json 資料。一個小腳本是將 ip 地址從該 json 結構中獲取到單個管道變數中的好方法;在這種情況下,我在 powershell 中撰寫腳本,但如果它更適合您的環境,您可以使用 bash。
task: Powershell@2
displayName: Extract IP Address
inputs:
targetType: inline
script: |
$outputData = $(deployment.KubectlOutput) | ConvertFrom-Json;
$ipAddress = $outputData.status.loadBalancer.ingress.ip;
Write-Host "##vso[task.setvariable variable=_LBIPADDRESS_;isOutput=true;]$ipAddress"
這將創建一個名為LBIPADDRESS的管道變數,其中包含您需要的值;然后,您的下一個任務可以像所有其他管道變數一樣參考它:
az apim api create `
--service-name $(apimanagement) `
-g $(apim-resourcegroup) `
--api-id $(apiname) `
--path $(apiname) `
--display-name $(apiname) `
--service-url "http://$(_LBIPADDRESS_)/openapi.json" `
--subscription-key-required false
注意:我參考了其他處理 Kubernetes 任務和輸出變數的堆疊溢位問題;它們也可能對您有用:
- 如何在 Azure 管道 (VSTS) 中使用 Deploy to Kubernetes 任務的輸出變數
- https://stackoverflow.com/a/70496312/174843
- https://stackoverflow.com/a/67917258/174843
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/472097.html
標籤:变量 天蓝色的devops 输出 天蓝色管道 天蓝色管道发布管道
