在Azure Devops Build Pipeline中添加地形图输出作为PR注释



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

  1. PR的创建应该触发构建管道
  2. 生成管道中的任务应向引发的PR发布注释。注释的内容将地形规划输出,即即将部署的新基础设施
  3. 一旦PR获得批准并将代码合并到master,就会触发CD管道将基础架构部署到Azure

到目前为止,我已经对1和3的要求进行了排序,但我不知道如何用地形图命令的内容在PR上发布评论。有内置的任务吗?如果没有,我如何才能做到这一点?这可能吗?如果是这样的话,有人能指出一个有帮助的资源吗?或者只显示相同的.yml文件?

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

在Azure Devops Build Pipeline 中添加地形计划输出作为PR注释

恐怕目前还没有这样一种开箱即用的方式来添加地形图输出作为PR评论。

我现在想到的解决方法是调用Rest API来创建一个PR注释,其中包含terraform平面命令中的内容。

我们可以使用Rest API Pull请求线程注释-创建:

POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/threads/{threadId}/comments?api-version=5.1

创建对PR的注释。我们可以将地形图命令中的内容写为请求正文:

{
"content": "YourContentsFromTerraformPlan ",
"parentCommentId": 1,
"commentType": 1
}

但API以上需要pullRequestId。因此,我们还需要另一个API来获得当前项目Pull Requests的pullRequestId-GetPull RequestsByProject:

GET https://dev.azure.com/{organization}/{project}/_apis/git/pullrequests?api-version=5.1

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

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

希望这能有所帮助。

最新更新