删除和恢复包

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Azure Artifacts 安全地将各种包类型存储在源中,无论你是直接发布它们还是从上游源保存它们。 随着较旧的包版本变得不太相关,可以考虑通过手动删除或使用保留策略将其删除。 本文将指导如何进行以下操作:

  • 从源中删除包。
  • 设置保留策略。
  • 手动永久删除包。
  • 恢复最近删除的包。

注意

若要删除/恢复包或设置保留策略,你必须是 源所有者

删除包

在 Azure Artifacts 中,包是不可变的。 将包发布到源后,其版本号将永久保留。 即使从源中删除它,也不能发布具有相同版本号的新包。

注意

必须是 源发布者(参与者) 才能取消列出包和 源所有者 才能将其删除。

有两种可用选项可用于从源、 取消列出删除 NuGet 包。 取消列出包版本会将它从 Azure Artifacts 源和 NuGet.org 中的搜索结果中隐藏,同时删除包版本会将其发送到回收站,并使其无法安装。

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择“ 项目”,然后从下拉菜单中选择源。

  3. 选择要删除的包,然后选择“取消列出”或删除”。

    显示如何删除或取消列出 NuGet 包的屏幕截图。

使用 NuGet.exe 取消列出包

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择“ 项目”,然后从下拉菜单中选择源。

  3. 选择连接以NuGet.exe馈送>,然后查找并复制包源 URL。 它应类似于以下格式: “https://pkgs.dev.azure.com/OrganizationName/ProjectName/_packaging/FeedName/nuget/v3/index.json"

  4. 运行以下命令以取消列出 NuGet 包:

    nuget.exe delete <PACKAGE_NAME> <PACKAGE_VERSION> -Source <PACKAGE_SOURCE_URL> -ApiKey <KEY>
    

注意

Azure DevOps 和 Visual Studio Team Foundation Server 将 nuget.exe delete 命令解释为未列出操作。 若要删除包,必须使用 REST API 或从 Web 界面手动删除它。

永久删除包

在回收站中放置的包在 30 天后会永久删除,但它们在此期间仍会持续产生存储成本。 如果要在此时间段之前删除它们,可以按照以下步骤手动将其从回收站中删除:

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择“ 项目”,然后从下拉菜单中选择源。

  3. 从右上角选择 回收站

    显示如何在 Azure Artifacts 中访问回收站的屏幕截图。

  4. 选择要永久删除的包,然后选择 “永久删除”。

    显示如何在 Azure Artifacts 中永久删除包的屏幕截图。

  5. 再次选择“永久删除以确认你的决定。 包将永久删除。

    显示永久删除包之前确认消息的屏幕截图。

使用保留策略自动删除包

源中托管的每个包的版本数可能会很快增长。 若要释放存储空间,可以设置保留策略以自动删除旧包。

如果要无限期地保留包,可以将其提升为 视图。 提升到视图的包不受保留策略的豁免,不会受到删除的约束。 若要为源配置保留策略,请执行以下步骤:

注意

Azure Artifacts 不支持包降级。

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择“项目”,然后从右上角选择齿轮图标齿轮图标以访问源的设置。

  3. 选择“源详细信息,然后检查“启用包保留”检查框。 提供每个 的最大版本数和 天数的值,以保留最近下载的包

    • 每个包的最大版本数:要保留的每个包的版本数。

    • 保留最近下载的包的天数:仅当包尚未下载到此处指定的天数时,才会删除这些包。

  4. 完成时选择“保存” 。

    显示如何为源设置保留策略的屏幕截图。

注意

启用保留策略时,满足以下两个条件时,将删除包的版本:

  • 已发布版本数达到 每个包 限制的最大版本数。
  • 该包的版本尚未在“天”中指定的 时间段内下载,以保留最近下载的包

还原已删除的包

已删除的包在回收站中保留 30 天。 在此时间段后,它们将被永久删除。 必须是源 所有者 才能还原已删除的包。

  1. 登录到 Azure DevOps 组织,并导航到你的项目。

  2. 选择 项目,然后选择 回收站

  3. 选择包,然后选择“ 还原”。

    显示如何还原已删除的包的屏幕截图。

  4. 再次选择“还原以确认你的决定。

问答

问:弃用、取消列出洋克删除包版本有何区别?

答:弃用适用于 npm 包,Yank 适用于 Cargo 包,Unlist 适用于 NuGet 包。 还可以 删除 任何包类型(npm、Maven、Python、Cargo 和通用包):

  • 弃用(npm):弃用包版本时,会将警告消息添加到包的元数据中。 每当查看或安装包时,Azure Artifacts 和大多数 npm 客户端都会显示此警告消息。

  • 取消列出 (NuGet):取消列出包版本会将它从 Azure Artifacts 源中的搜索结果和 NuGet.org 上隐藏。

  • 洋克 (Cargo):扬金包版本将其标记为已过时或已弃用,从而阻止其使用,但不会删除该包。

  • 删除:删除包版本会使安装不可用。 删除的包可以在删除后的 30 天内从回收站还原。 在此时间段后,将永久删除包。

问:启用保留策略时,旧包或现有包会发生什么情况?

答:旧包或现有包将被软删除并移动到回收站。 删除作业每天运行一次,但由于包的涌入,首次启用策略后最初可能会出现延迟。

包在回收站中保留 30 天,然后才会永久删除。 若要从计费存储中删除包,可以选择在 30 天结束之前使用 UI 或 REST API 手动将其删除。

问:删除 Artifacts 后,计费存储的更新需要多长时间?

答:通常,存储消耗应在 24 小时内更新,但在某些情况下,可能需要长达 48 小时才能反映更改。 组织的计费页上的项目使用情况每天更新一次。 但是,“项目存储”页更新得更频繁,这可能会导致两页上显示的信息之间存在细微差异。