Azure Pipelines - 部署环境 - 查询(+删除)资源

问题描述 投票:0回答:1

在 Azure Devops 的“经典”部署管道中,我们将利用 Azure 部署代理组来启动 Docker 实例,然后在容器内执行操作。

我们正在转向 YAML 管道,并正在努力执行相同的工作流程。

似乎没有功能对等,因此我们需要在 DevOps 中利用环境。我有一个 docker 容器,可以毫无问题地将自身注册为环境中的资源。我还可以使用 REST API 即时查询和创建这些。

我的问题是,似乎不可能在不破坏整个环境的情况下“删除”资源?我们可以通过/_apis/distributedtask/environments/62?expands=resourceReferences

查询
我们当然可以通过在容器上运行remove命令来

取消注册资源

,但这并不能满足“如果docker容器死机/离线怎么办”的场景。我们将留下悬而未决的资源,这将阻碍新资源的创建 我最初通过为每个容器创建一个新的动态命名环境来解决这个问题,但似乎由于 YAML 在运行之前评估部署环境,所以这是不可行的(因为环境不存在!)

回到实际问题:是否可以在环境中删除/取消注册资源?

azure-devops yaml azure-pipelines-yaml
1个回答
0
投票
是否可以删除/取消注册环境中的资源?

是的。我们可以使用以下两种方法来删除Pipeline环境中的VM资源。

方法一:我们可以通过环境中的

删除选项

手动删除虚拟机资源。 查看截图示例

方法2:我们可以使用API来实现。我们目前没有官方的 Rest API 来支持此操作,但我们可以使用后端捕获的 API(浏览器 F12 选项并检查 Network 选项卡)来删除环境中的资源。

这是 API 示例:

API地址:

POST https://dev.azure.com/{OrganizationName}/_apis/Contribution/HierarchyQuery?api-version=5.0-preview.1

请求正文:

{ "contributionIds":["ms.vss-environments-web.environment-delete-resource-data-provider"], "dataProviderContext": { "properties": { "resourceId":"{VMresourceID}", "resourceType":"2", "sourcePage": { "url":"https://dev.azure.com/{orgname}/{projectname}/_environments/{environmentID}?view=resources", "routeId":"ms.vss-environments-web.environments-route-with-id", "routeValues":{ "project":"{Projectname}", "environmentId":"{environmentID}", "viewname":"environment", "controller":"ContributedPage", "action":"Execute" } } } } }

我们可以通过Rest API获取相关参数:

GET https://dev.azure.com/{organization}/{project}/_apis/distributedtask/environments/{environmentId}?expands=resourceReferences&api-version=7.1-preview.1

© www.soinside.com 2019 - 2024. All rights reserved.