Azure devops 在Azure Devops构建管道中将地形规划输出添加为PR注释

Azure devops 在Azure Devops构建管道中将地形规划输出添加为PR注释,azure-devops,terraform,devops,Azure Devops,Terraform,Devops,在我当前的任务中,我正在将terraform集成到我们的Azure DevOps CI/CD管道中。我的要求如下: PR的创建应触发构建管道 构建管道中的任务应向提出的PR发布评论。评论的内容将 是地形规划输出,即将要部署的新基础设施 一旦PR被批准,代码合并到master,将触发CD管道,这将 将基础架构部署到Azure 到目前为止,我都是按照1和3的要求来排序的,但我不知道如何用terraform plan命令中的内容发布PR评论。是否有用于此的内置任务?如果没有,我如何才能做到这一点?这可

在我当前的任务中,我正在将terraform集成到我们的Azure DevOps CI/CD管道中。我的要求如下:

  • PR的创建应触发构建管道
  • 构建管道中的任务应向提出的PR发布评论。评论的内容将 是地形规划输出,即将要部署的新基础设施
  • 一旦PR被批准,代码合并到master,将触发CD管道,这将 将基础架构部署到Azure 到目前为止,我都是按照1和3的要求来排序的,但我不知道如何用terraform plan命令中的内容发布PR评论。是否有用于此的内置任务?如果没有,我如何才能做到这一点?这可能吗?如果是这样的话,有人能指出一个有帮助的资源,还是仅仅显示相同的.yml文件

    我找了很多,但什么也没找到。我猜您不能从构建管道添加注释。我需要你的建议

    在Azure Devops构建管道中将地形规划输出添加为PR注释

    恐怕目前还没有现成的方法将地形图输出添加为PR注释

    我现在考虑的解决方法是调用RESTAPI,用terraform plan命令的内容创建PR注释

    我们可以使用Rest API:

    要创建对PR的注释,我们可以将terraform plan命令中的内容写入请求正文:

    {
      "content": "YourContentsFromTerraformPlan ",
      "parentCommentId": 1,
      "commentType": 1
    }
    
    但是上面的API需要
    pullRequestId
    。因此,我们还需要另一个API来获取当前项目的
    pullRequestId

    它将返回一系列pullRequestId,然后我们可以使用powershell参数
    Select Object-first 1
    比如:
    $LastPullRequestId=$pullRequestId.value.id | Select Object-first 1
    来获取最新的
    pullRequestId

    因此,我们可以在构建管道中添加两个内联powershell任务来调用RESTAPI以获取最新的
    pullRequestId
    ,然后使用此
    pullRequestId
    创建PR注释


    希望这能有所帮助。

    由于您处于由PR触发的生成中,pullRequestId也可以通过预定义变量$(System.PullRequest.pullRequestId)获得
    {
      "content": "YourContentsFromTerraformPlan ",
      "parentCommentId": 1,
      "commentType": 1
    }
    
    GET https://dev.azure.com/{organization}/{project}/_apis/git/pullrequests?api-version=5.1