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 上的搜索结果中隐藏。删除软件包版本会将其移至回收站,使其无法安装。
登录到 Azure DevOps 组织,然后导航到项目。
选择“ 项目”,然后从下拉菜单中选择源。
选择要删除的包,然后选择 “取消列表 ”,将其从 Azure Artifacts 源中的搜索结果中隐藏,然后在 NuGet.org 或 “删除” 中将其移动到回收站。
取消列出包 (CLI)
登录到 Azure DevOps 组织,然后导航到项目。
选择项目,然后从下拉菜单中选择源。
选择连接到源>NuGet.exe,然后查找并复制包源 URL。 它应遵循以下格式:
https://pkgs.dev.azure.com/OrganizationName/ProjectName/_packaging/FeedName/nuget/v3/index.json
运行以下命令以取消列出包。 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 天后自动删除,但在此期间仍计入存储使用情况。 若要更快地删除它们,可以按照以下步骤从回收站手动删除它们:
登录到 Azure DevOps 组织,然后导航到项目。
选择项目,然后从下拉菜单中选择源。
在右上角,选择 “回收站”。
选择要永久删除的包,然后选择 “永久删除”。
再次选择 “永久删除 ”以确认你的决定。 您的包将被永久性删除。
根据保留策略自动删除包
随着源中包版本数量的增加,存储空间的使用量也会迅速增加。 可以设置保留策略以自动删除旧包版本并释放空间。
如果需要无限期保留包,请将其提升到视图。 视图中的包不受保留策略的约束,不会被删除。 若要为源配置保留策略,请执行以下步骤:
注释
Azure Artifacts 不支持包降级。 将包提升为视图后,无法将其还原回 @local。
登录到 Azure DevOps 组织,然后导航到项目。
选择“项目”,然后选择右上角的齿轮图标
,以访问源的设置。
选择 “源详细信息”,选中 “启用包保留 ”复选框,并配置以下设置:
每个包的最大版本数:要保留的每个包的版本数。
保留最近下载的包的天数:仅当包尚未下载到此处指定的天数时,才会删除这些包。
完成时选择“保存”。
注释
启用保留策略后,仅当满足以下 两 个条件时,才会删除包版本:
- 已发布版本的总数达到 每个包限制的最大版本数 。
- 在保留最近下载的包的天数中指定的时间范围内,该包的版本尚未被下载。
还原已删除的包
已删除的包在回收站中保留 30 天。 在此时间段后,它们将被永久删除。 若要从回收站还原包,请执行以下步骤:
登录到 Azure DevOps 组织,然后导航到项目。
选择 “项目”,然后选择 “回收站”。
选择包,然后选择“ 还原”。
再次选择 “还原 ”以确认你的决定。
问答
问:弃用、移除列出、撤回和删除包版本有何区别?
答: 弃用 适用于 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 小时才能反映更改。 组织的计费页上的项目使用情况每天更新一次,而“项目存储”页更新频率更高,这可能会导致两者之间略有差异。