簡體   English   中英

Azure DevOps 為特定任務構建管道 logid - 動態

[英]Azure DevOps build pipeline logid for a specific task - dynamically

在 Azure DevOps 中,我有一個多階段構建管道。 在該管道中,我有一個名為 Terraform_init 的任務。 我需要這個任務的動態日志 ID。 如果我知道任務的顯示名稱,如何動態找出日志 ID?

現在的情況:

現在我已經計算出該任務的日志 ID。 但稍后,在我的構建管道中,我將在 Terraform_init 任務之前添加更多任務。 因此,將為該任務更改日志 ID。

為什么我需要:

在 Terraform 初始化任務之后,我有另一個名為 Get_logs 的任務。 此任務獲取 Terraform_init 任務的日志並將其保存在 blob 中。 為此,我必須使用以下行 -

$logs_url = ('https://dev.azure.com/bmw-ai-big-data-platform/{0}/_apis/build/builds/{1}/logs/27?api-version=6.0' -f $($env:SYSTEM_TEAMPROJECTID), $($env:BUILD_BUILDID) )

在 Terrafrom_init 任務之前我會有更多任務,所以../logs/27.. - 這部分每次都需要更新。 我想避免這種情況。

先謝謝了。

使用此代碼獲取 logid:

import requests
import json

url = "https://dev.azure.com/<orgname>/<project name>/_apis/build/builds/<build id>/timeline?api-version=6.0"

payload={}
headers = {
  'Authorization': 'Basic <base64encoded PAT>'
}

response = requests.request("GET", url, headers=headers, data=payload)

reponse_json = response.json()
records = reponse_json['records']
for record in records:
    if record['name'] == 'Initialize job':
        print(record['log']['id'])

之后,使用logging命令將output這個數據作為變量,就可以在后面的其他任務中使用了(只針對運行時,編譯時無法實現)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM