什么控制 Azure 云管道中构建的保留?

What controls the retention of builds in Azure cloud pipelines?

我们有一个非常常见的构建管道和部署管道的情况,其中构建管道生成构建工件(在我们的例子中,powershell 和 .zip 中的 json 文件)和部署管道使用该工件(和 VM 映像)部署 Azure 资源(在我们的示例中为 VM)。

我们在构建工件的保留方面存在问题,因为 - 它们 - 我的理论 - 在 azure 的构建文件夹中并且受那里的保留规则约束。

工件保留 • 项目设置

问题是旧的“工件”消失了,没有任何解释——即使我们有基本的 VM 映像仍然可用,我们也不能再为我们的旧版本软件创建 VM。具体来说,它们作为部署管道中此下拉列表中的选项消失:

我认为下拉列表是从构建管道的构建或暂存文件夹中可用的 files/artifacts 列表中获取的。其他开发人员最近的研究推翻了我的理论。 Microsoft 没有关于下降的提要以及控制工件可用性的因素的文档 - 尽管我们怀疑仍然以某种方式基于构建管道。一直以来,似乎在使用 Azure 管道时,没有办法让较旧的(根据年龄或“#builds ago”)构建可用于部署——这简直令人难以置信。

构建工件保留:

据我所知,三个点可以影响保留时间。

  1. 建立保留策略。根据您的屏幕截图,您已经为 Days to keep artifacts, symbols and attachments 设置了 30 天。此保留政策会将工件保留 30 天。

如果不覆盖策略,工件将在 30 天后删除

  1. 发布保留政策。如果在发布中使用工件,发布保留政策将覆盖构建保留政策。

单发:可以在Release -> Retention

勾选这个选项

全部发布:您可以在Project Settings-> Release Retention.

中查看

工件保留政策将遵循发布保留政策。

  1. 如果构建或相关版本已保留,工件将永远保留(覆盖所有策略)。 Build -> Retain, Release -> Retain indefinitely

例如:

Retain 选项可以永久保留构建。

如果你想保留旧的工件,你可以使用这个选项。

这是关于 build and release retention policy 的文档。

对于版本下拉列表:

下拉列表显示成功的构建版本。无论是否包含工件,它们都会显示在列表中。

版本对应构建版本号

例如: