如何从 GitHub 个包中删除旧的快照工件

How to delete old snapshot artifacts from GitHub packages

我有一个 GitHub 工作流,它构建和部署库的快照版本作为 GitHub 包,例如 mycompany.mytool.1.0.0-SNAPSHOT.jar。每当我进行新的构建和部署时,都会创建一个新资产,例如 mycompany.mytool.1.0.0-20210723.145233-1.jar 而不是它然后以某种方式与 SNAPSHOT 标签相关联。这一切似乎都有效,我可以毫无问题地访问 mycompany.mytool.1.0.0-SNAPSHOT.jar

我现在的问题是,我怎样才能摆脱这个 jar 的所有这些旧版本?其实我只是想保留最新版本。我可以通过网络界面手动删除它们,但这是一项非常棘手的任务。我也想以某种方式将其自动化。

在撰写本文时这是不可能的。 GitHub 工作人员 Jamie Cansdale 在他们的社区论坛中写道:

SNAPSHOT versions are exposed as artifacts inside a regular versions. There isn’t an API for cleaning up artifacts, only whole versions.

(source)

这意味着单个 SNAPSHOT 版本(如 1.0.0-SNAPSHOT)将累积您创建的所有构建,并且所有工件将显示在右侧的 Assets 列表中的网页。

我能想到的唯一实用的解决方案是,在发布每个构建的工件之前,您从脚本中 delete the whole version。然后,您将获得将一组工件存储为 1.0.0-SNAPSHOT 版本名称的一部分的效果。

但是这个解决方案并不理想:public 如果软件包版本足够流行则不能删除它们(可能是为了避免抢注攻击):

If the package is public and the package version has more than 5,000 downloads, you cannot delete the package version. In this scenario, contact GitHub support for further assistance.