在特定环境上自动发布部署
Automatic Release deployment on a specific Environment
我有一个包含多个项目和存储库的 azure 组织。每当我在项目的任何存储库中进行一些提交时,都会在与不同项目下的该存储库同名的管道下创建一个新版本,并使用 CI/CD 在测试环境中部署相同的版本。在测试环境中进行相同的测试后,我想在生产环境中自动化部署 100 多个管道(针对我更新的各种不同的回购协议)的过程。我对此还很陌生,你能建议一种自动化这个过程的方法吗?
我查看了 azure CLI,发现在回购中创建的合并 ID 显示在创建的新版本下(就像这个版本是使用这个合并图像创建的),我可以通过某种方式获取该 ID 和创建的回购管道在特定环境中部署相同。每个管道都有多个版本,因此我想部署在我的合并创建的版本上。
仅供参考,我正在使用 cli 脚本一次更新所有存储库中的公共值,因此所有 PR 都是使用相同的附加任务创建的。只是提到这一点,因为可能有一些方法可以从使用该任务编号制作的 PR 中获取合并 ID。
目前我正在尝试使用 gitbash + azure cli 来做到这一点,我对 powershell 持开放态度,或者即使有办法通过创建一个可以处理这个问题的新管道来做到这一点,我也准备好了也学习那个。
谢谢!
我花了很多时间试图找到完美的 REST 调用,所以这就是我所做的:
此休息调用在 JSON 响应中提供工作项相关信息。您可以在响应中找到 workItemUpdates link。
- 再次在此 Link 上执行 REST 调用,它会提供对此工作项完成的所有可能更新,其中 value.relations.added.url 在此之下我们将获得所有关于回购的更新。在拆分与“%2F”上的 *pullRequest* 匹配的部分时,第三部分为我们提供了拉取请求编号。
因此,通过这种方式我们可以获取所有 Pr Linked with a work Item。
- 使用 Pr id 命中:
获取 https://dev.azure.com/{organization}/{project}/_apis/git/pullrequests/{pullRequestId}?api-version=6.0
在 repository.name 下,我得到了用于 :
获取 https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=4.1
在值[0].commitId 下,我们得到最新的 SHA 提交 ID,我们需要这个 ID 来找到我们编辑创建的版本。
现在继续管道。
获取 https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=6.0
这个 rest 调用提供了发布定义信息,我们可以从中获取最新发布创建的信息,这是唯一的缺点,因为我们无法获取该定义的所有发布信息。在此响应中,我们可以获取发布 ID(lastRelease.id 是路径)
在 中使用此版本 ID:
GET https://vsrm.dev.azure.com/hmcloud/Appeaser-System/_apis/release/releases/{release id}?api-version=6.0
要获取与该版本相关的信息,请在环境中循环以获取您希望部署它的特定阶段的环境 ID,最后使用它进行部署:
How do I deploy a release from DevOps via the API
我有一个包含多个项目和存储库的 azure 组织。每当我在项目的任何存储库中进行一些提交时,都会在与不同项目下的该存储库同名的管道下创建一个新版本,并使用 CI/CD 在测试环境中部署相同的版本。在测试环境中进行相同的测试后,我想在生产环境中自动化部署 100 多个管道(针对我更新的各种不同的回购协议)的过程。我对此还很陌生,你能建议一种自动化这个过程的方法吗?
我查看了 azure CLI,发现在回购中创建的合并 ID 显示在创建的新版本下(就像这个版本是使用这个合并图像创建的),我可以通过某种方式获取该 ID 和创建的回购管道在特定环境中部署相同。每个管道都有多个版本,因此我想部署在我的合并创建的版本上。
仅供参考,我正在使用 cli 脚本一次更新所有存储库中的公共值,因此所有 PR 都是使用相同的附加任务创建的。只是提到这一点,因为可能有一些方法可以从使用该任务编号制作的 PR 中获取合并 ID。
目前我正在尝试使用 gitbash + azure cli 来做到这一点,我对 powershell 持开放态度,或者即使有办法通过创建一个可以处理这个问题的新管道来做到这一点,我也准备好了也学习那个。
谢谢!
我花了很多时间试图找到完美的 REST 调用,所以这就是我所做的:
此休息调用在 JSON 响应中提供工作项相关信息。您可以在响应中找到 workItemUpdates link。
- 再次在此 Link 上执行 REST 调用,它会提供对此工作项完成的所有可能更新,其中 value.relations.added.url 在此之下我们将获得所有关于回购的更新。在拆分与“%2F”上的 *pullRequest* 匹配的部分时,第三部分为我们提供了拉取请求编号。
因此,通过这种方式我们可以获取所有 Pr Linked with a work Item。
- 使用 Pr id 命中: 获取 https://dev.azure.com/{organization}/{project}/_apis/git/pullrequests/{pullRequestId}?api-version=6.0
在 repository.name 下,我得到了用于 : 获取 https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}?api-version=4.1
在值[0].commitId 下,我们得到最新的 SHA 提交 ID,我们需要这个 ID 来找到我们编辑创建的版本。
现在继续管道。 获取 https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions/{definitionId}?api-version=6.0 这个 rest 调用提供了发布定义信息,我们可以从中获取最新发布创建的信息,这是唯一的缺点,因为我们无法获取该定义的所有发布信息。在此响应中,我们可以获取发布 ID(lastRelease.id 是路径)
在 中使用此版本 ID: GET https://vsrm.dev.azure.com/hmcloud/Appeaser-System/_apis/release/releases/{release id}?api-version=6.0
要获取与该版本相关的信息,请在环境中循环以获取您希望部署它的特定阶段的环境 ID,最后使用它进行部署: How do I deploy a release from DevOps via the API