簡體   English   中英

從 Jenkins 向 Azure DevOps 報告構建狀態

[英]Report build status from Jenkins to Azure DevOps

是否可以將 Jenkins 的構建狀態報告給 Azure DevOps?

我在 Azure DevOps 中有一個存儲庫,在 Jenkins 中有一個管道。 使用 Azure 服務掛鈎功能,我會在存儲庫更新時觸發 Jenkins 管道。 這適用於“內置 Jenkins API”和“Jenkins 的 DevOps 插件”選項。

現在,我希望在提交頁面上的 Azure DevOps 中顯示構建狀態,就像執行了本機 Azure DevOps 管道一樣,並在可能的情況下顯示指向 Jenkins 構建的鏈接。

有沒有辦法做到這一點?

我正在考慮在 Jenkins 中調用一些 Azure REST API 作為構建后操作,但是似乎沒有允許設置提交狀態的 API,也沒有允許為 Azure DevOps 本身從未啟動的構建插入數據。

有一個寧靜的 api,它允許您為提交頁面中的提交創建一個git 提交狀態

您可以在 Jenkins 中調用以下 API 作為構建后操作。

POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/commits/{commitId}/statuses?api-version=5.1

commitId 是提交 SHA。 您可以從Project Settings 中Repos下的Repositories 中獲取 repositoryId。 它在網址中。 檢查下面的屏幕截圖。

在此處輸入代碼

下面是在 powershell 腳本中創建提交狀態的示例。

$url="https://dev.azure.com/Org/Proj/_apis/git/repositories/....-..-442d-9dbe-76debfba1c60/commits/....faac7aafeefb3f1b83c/statuses?api-version=5.1"

$connectionToken ="Person Access Token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

$body ='{
  "state": "succeeded",
  "description": "The build is successful",
  "targetUrl": "https://dev.azure.com/.../.../_build/results?buildId=1577",
  "context": {
    "name": "Build123",
    "genre": "continuous-integration"
  }}'

Invoke-RestMethod -Uri $url -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Method  Post -ContentType "application/json" -Body $body

暫無
暫無

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

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