删除和恢复包

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

Azure Artifacts 可在源中安全存储各种类型的包,无论是直接发布的还是从上游来源保存的。 随着较旧的包版本变得不那么相关,可以手动删除它们,或使用保留策略释放空间并降低成本。

先决条件

产品 要求
Azure DevOps - 一个 Azure DevOps 组织
- Azure DevOps 项目
- Azure Artifacts 源
- 权限:
    - 你必须是源所有者才能设置保留策略、删除包和源,或从回收站还原包。
    - 你必须是源发布者(贡献者)或更高级别才能取消列出、弃用或移除包。

删除软件包

在 Azure Artifacts 中,包是不可变的,这意味着在发布后无法重复使用或修改其版本号。 一旦将包发布到源中,其版本号就会被永久保留。 即使删除包,其版本仍会记录在源的历史记录中,并且无法发布具有相同版本号的新包。

从源中删除 NuGet 包有两种方法:取消列出删除。 取消列出包版本会将其从 Azure Artifacts 源和 NuGet.org 上的搜索结果中隐藏。删除软件包版本会将其移至回收站,使其无法安装。

  1. 登录到 Azure DevOps 组织,然后导航到项目。

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

  3. 选择要删除的包,然后选择 “取消列表 ”,将其从 Azure Artifacts 源中的搜索结果中隐藏,然后在 NuGet.org“删除” 中将其移动到回收站。

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

取消列出包 (CLI)

  1. 登录到 Azure DevOps 组织,然后导航到项目。

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

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

  4. 运行以下命令以取消列出包。 ApiKey 参数是必需的,但在发布到 Azure Artifacts 源时被视为占位符,因此可以使用任何字符串值:

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

重要

Azure DevOps 将 nuget.exe delete 命令解释为取消列出操作。 这意味着,运行命令不会删除包,而是将其在 Azure Artifacts 源和 NuGet.org 的搜索结果中隐藏。若要从源中删除包,必须使用 REST API 或从 Web 界面手动删除它。

永久删除软件包

回收站中的包会在 30 天后自动删除,但在此期间仍计入存储使用情况。 若要更快地删除它们,可以按照以下步骤从回收站手动删除它们:

  1. 登录到 Azure DevOps 组织,然后导航到项目。

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

  3. 在右上角,选择 “回收站”。

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

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

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

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

根据保留策略自动删除包

随着源中包版本数量的增加,存储空间的使用量也会迅速增加。 可以设置保留策略以自动删除旧包版本并释放空间。

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

注释

Azure Artifacts 不支持包降级。 将包提升为视图后,无法将其还原回 @local

  1. 登录到 Azure DevOps 组织,然后导航到项目。

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

  3. 选择 “源详细信息”,选中 “启用包保留 ”复选框,并配置以下设置:

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

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

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

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

注释

启用保留策略后,仅当满足以下 个条件时,才会删除包版本:

  • 已发布版本的总数达到 每个包限制的最大版本数
  • 保留最近下载的包的天数中指定的时间范围内,该包的版本尚未被下载。

还原已删除的包

已删除的包在回收站中保留 30 天。 在此时间段后,它们将被永久删除。 若要从回收站还原包,请执行以下步骤:

  1. 登录到 Azure DevOps 组织,然后导航到项目。

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

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

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

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

问答

问:弃用移除列出撤回删除包版本有何区别?

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

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

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

  • Yank(Cargo):将一个包版本标记为已过时或弃用,以不建议使用该版本,但不会删除该包。

  • 删除:删除包版本会将其移动到回收站,使其无法安装。 删除的包可以在 30 天内从回收站还原。 在此时间段之后,它们将被永久删除。

问:如何删除所有包版本?

答:若要删除包的所有版本,请从源中选择包,选择 “版本”,然后选择 版本旁边的复选框。 这将会在源中选择该包的所有版本。 选择“ 删除”,然后再次选择“删除”以确认。

一个屏幕截图,显示如何从订阅源中删除所有版本。

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

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

在永久删除包之前,包将保留在回收站中 30 天。 若要从计费存储中删除包,可以使用 Web UI 或 REST API 在 30 天期限结束之前手动删除这些包。

问:如果不想启用保留策略,该怎么办?

答:Azure Artifacts 保留策略旨在帮助管理依赖项并简化存储成本管理。 如果选择不启用保留策略,则需要根据需要手动管理存储、监视消耗和删除包。 Azure Artifacts 为每个组织提供 2 GiB 的免费存储,可用于评估该服务是否符合工作流。 超过存储限制后,除非设置了计费并 增加存储限制,否则将无法发布新项目。

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

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