gpt4 book ai didi

powershell - 生成失败时如何在Azure DevOps PR中创建注释?

转载 作者:行者123 更新时间:2023-12-02 22:54:25 25 4
gpt4 key购买 nike

我有一个自定义生成步骤,该步骤在某些条件下在Azure DevOps的“拉取请求”生成过程中失败。
我想通过提出PR评论来进一步扩展它,类似于GitHub中的这种情况:
https://developer.github.com/v3/issues/comments/#create-a-comment
我没有要在此处添加代码示例,因为我找不到可以建立的有用示例。我在自定义构建步骤中使用PowerShell-在运行分支的PR构建时如何实现?

最佳答案

我可以举一个例子。将自定义消息\状态从管道发布到PR有很多值(value)。
首先,请确保您的构建服务具有权限以协助存储库中的拉取请求。
permissions
然后,您想添加一个条件PowerShell步骤。这只是基于它的PR构建,但是您可能要根据工作流在上一步中添加一个取决于失败的因素。

- task: PowerShell@2
condition: eq(variables['Build.Reason'], 'PullRequest')
displayName: Post Message to PR
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
inputs:
targetType: filePath
filePath: PostToPR.ps1
所以基本的工作流程是:
  • 构建 Markdown 消息
  • 构建JSON主体
  • 将消息发布到PR

  • PostToPR.ps1
    #Going to create the comment in an Active state, assuming it needs to be resolved
    #See https://docs.microsoft.com/en-us/dotnet/api/microsoft.teamfoundation.sourcecontrol.webapi.commentthreadstatus?view=azure-devops-dotnet
    $StatusCode = 1

    $Stuff = $env:Build_Repository_Name
    $Things = "Other things you might want in the message"

    #Build Up a Markdown Message to
    $Markdown = @"
    ## Markdown Message here
    |Column0 |Column1|
    |--------|---------|
    |$Stuff|$Things|
    "@

    #Build the JSON body up
    $body = @"
    {
    "comments": [
    {
    "parentCommentId": 0,
    "content": "$Markdown",
    "commentType": 1
    }
    ],
    "status": $StatusCode
    }
    "@

    Write-Debug $Body
    #Post the message to the Pull Request
    #https://docs.microsoft.com/en-us/rest/api/azure/devops/git/pull%20request%20threads?view=azure-devops-rest-5.1
    try {
    $url = "$($env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI)$env:SYSTEM_TEAMPROJECTID/_apis/git/repositories/$($env:Build_Repository_Name)/pullRequests/$($env:System_PullRequest_PullRequestId)/threads?api-version=5.1"
    Write-Host "URL: $url"
    $response = Invoke-RestMethod -Uri $url -Method POST -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Body $Body -ContentType application/json
    if ($response -ne $Null) {
    Write-Host "*******************Bingo*********************************"
    }
    }
    catch {
    Write-Error $_
    Write-Error $_.Exception.Message
    }
    最后,您会得到一个漂亮的Markdown表,其中包含PR中的自定义状态信息!
    enter image description here

    关于powershell - 生成失败时如何在Azure DevOps PR中创建注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60048492/

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