在我当前的任务中,我正在将terraform集成到我们的Azure DevOps CI / CD管道中。我的要求如下:
到目前为止,我对1和3的要求都进行了排序,但是我不知道如何使用terraform plan命令中的内容发布有关PR的注释。是否有任何内置任务?如果没有,我该如何实现?这有可能吗?如果是这样,有人可以指出可以提供帮助的资源还是仅显示相同的.yml文件?
我搜索了很多,但没有找到任何东西。我的猜测是您无法在构建管道中添加评论。需要您的建议。
答案 0 :(得分:1)
将Terraform计划输出添加为Azure Devops Build Pipeline中的PR注释
现在恐怕还没有现成的方法可以将terraform plan输出添加为PR注释。
我现在正在考虑的解决方法是调用Rest API以使用terraform plan命令中的内容创建PR注释。
我们可以使用Rest API Pull Request Thread Comments - Create:
POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/threads/{threadId}/comments?api-version=5.1
创建对PR的评论。我们可以将terraform plan命令中的内容写为Request Body:
{
"content": "YourContentsFromTerraformPlan ",
"parentCommentId": 1,
"commentType": 1
}
但以上API需要pullRequestId
。因此,我们还需要另一个API来获取当前项目Pull Requests - Get Pull Requests By Project的pullRequestId
:
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评论。
希望这会有所帮助。