带有Review Apps的Azure管道-合并后清理

时间:2020-06-01 22:10:35

标签: azure azure-pipelines azure-pipelines-yaml

我一直在使用yaml和Azure Pipeline为我们的项目设置管道。当前正在使用Azure Kubernetes Service添加审阅应用程序,并且想知道在PR合并后我们应该如何清理。

我们正在构建docker映像,将其推送到注册表,并将其部署到新的dev空间。然后就都留在那里了。

合并后,我们再也不会整理这些图像了,就像我们要从未经批准的PR中部署一样,每天都有数十个。我们也想删除审阅应用程序,并在完成这些多余的部署后将其删除

我在文档中找不到任何内容。我想念什么吗?

3 个答案:

答案 0 :(得分:0)

我一直想知道同一件事,如何清理所有“临时”资源?看到文档说“临时”,我希望内置此功能。

即使我们在master上触发,我也不相信管道中有足够的信息来知道哪个PR导致了对master的提交,因此我们不能保证拆除正确的评论应用。

答案 1 :(得分:0)

我今天一直在努力,并认为我已经做好了。 我创建了一个新的管道,该管道使用kubectl任务删除了评论应用程序名称空间,还使用了azure cli任务运行az acr purge来删除为PR创建的图像,这些图像的标签以pr编号为前缀,因此可以识别它们。 我将此管道设置为不与CI一起运行,并且不下载源代码。 然后,我制作了一个Azure函数,该函数使用调用Run Pipeline API来运行它,并将PR号作为变量传递给管道。 最后,我使用Service Hooks在更新的PR上调用Azure函数。

唯一未完成的事情是不会删除在DevOps站点上自动创建的环境资源。我找不到用于此的API,因此我们可能不得不忍受。

答案 2 :(得分:0)

通过使用浏览器开发工具并单击 ADO 中的删除按钮,我设法找到了如何使用 Azure DevOps Rest API 删除环境资源。

您可以发送:

DELETE <azure-dev-ops-base-url>/<organization>/_apis/distributedtask/environments/{environment-id}/providers/kubernetes/{resource-id}?api-version=6.0-preview.1

要查找环境 ID 和资源 ID 使用:

GET: <azure-dev-ops-base-url>/<organization>/_apis/distributedtask/environments?api-version=6.0-preview.1
GET: <azure-dev-ops-base-url>/<organization>/_apis/distributedtask/environments/{environment-id}?expands=resourceReferences&api-version=6.0-preview.1