[英]Can we raise and merge a pull request from Azure Devops pipelines?
我有一个发布分支,通过它我正在执行 CI/CD yaml 管道并在 AKS 上的不同环境中部署应用程序。
一旦我的 UAT 部署阶段完成,我想创建一个拉取请求并在没有冲突的情况下合并分支,从发布分支到主分支。 并且仅在完成拉取请求后,应该开始 PROD 部署阶段。
是否有任何任务/脚本可以帮助我实现目标?
我已经检查了Create Pull Request扩展,但目前它只支持 Windows 机器。
我还阅读了有关 Azure DevOps REST API 以创建拉取请求,但有人提到 API 仅支持 2 次提交。
这里的任何帮助将不胜感激。
在 Linux 中,您可以使用PowerShell 内核和rest ZDB974238714CA8DE634A7CE1D083A1来创建:
$body = @{
sourceRefName= "refs/heads/feature"
targetRefName = "refs/heads/master"
title = "PR from Pipeline"
}
$head = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
$json = ConvertTo-Json $body
$url = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/git/repositories/$(Build.Repository.Name)/pullrequests?api-version=5.0"
Invoke-RestMethod -Uri $url -Method Post -Headers $head -Body $json -ContentType application/json
您可以使用拉请求- 创建Rest Api 创建拉请求,如 Shayki Abramczyk 所述。 见例子。
但是,有一种更简单的方法是在附加代理作业中使用创建拉取请求扩展并在 windows 代理上运行此作业。 请参见以下步骤:
1,在您的 UAT 部署阶段添加另一个代理作业。
2、添加Create Pull Request任务来创建Pull request。
如果您希望在拉取请求完成时自动启动 PROD 部署阶段。 您可以考虑在 PROD 部署阶段使用 Invoke rest api Gate。 有关门的更多信息,请参见此处。 您可以参考以下步骤:
1,创建通用服务连接以连接到您的 azure devops 项目。
服务器 URL: https://dev.azure.com/OrgName/ProjName
密码:个人访问令牌
2、为PROD部署阶段添加一个invoke rest api Gate。
invoke rest api Gate will invoke the Pull Requests - Get Pull Requests rest api to get the Pull request created in UAT stage. 并且只有在Pull 请求完成后才能通过gate。
URL 后缀和参数:/_apis/git/repositories/{RepoId}/pullrequests?searchCriteria.sourceRefName=refs/heads/{sourceBranchName}&searchCriteria.targetRefName=refs/heads/{TargetBranchName}&$top=1&api-version=6.1-预览.1
成功标准:not(root['value'][0])
更新:
要使用上述调用 yaml 管道中的 rest api。 您需要使用部署作业并为您的环境定义批准和检查。
有关更多信息,请参阅批准和检查。
在这里查看有关环境的更多信息,
请参阅此线程在 Azure YAML 管道中实现门
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.