Ant/ivy 脚本有助于删除具有阈值的旧工件

Posted

技术标签:

【中文标题】Ant/ivy 脚本有助于删除具有阈值的旧工件【英文标题】:Ant/ivy script help to remove old artifacts with threshold 【发布时间】:2014-09-12 18:08:59 【问题描述】:

我对 Apache Ant、ivy 和 artifactory 真的很陌生。 我只是有一个要求,如果可能的话,有人可以帮助我弄清楚如何继续或 XML 代码。

假设我在人工制品中有 3 个人工制品。例如。门槛是3.. 当我运行新版本时,我的 ant/ivy 脚本应该检测到工件中已经有 3 个文件, 它应该删除最旧的文件,然后将最新的构建包上传到工件中。这是避免工件中的文件过多并轻松清理它。 我们需要将标准代码放入每个 Ant 脚本中,以便工件干净..

【问题讨论】:

【参考方案1】:

如果您指的是快照工件,那么 Artifactory 具有用于限制快照数量的内置机制。 要指定可以存储的最大快照数,请在编辑存储库对话框中选择基本设置标签。 您首先需要选中 Handle Snapshots 复选框,然后您可以设置 Max Unique Snapshots 字段。该值默认为零,表示保存所有快照。

此外,您可以通过开发自定义用户插件或使用 Artifactory REST API 创建外部脚本来清理工件。 Artifactory 通过允许您编写自定义 User Plugins 来支持清理,您可以开发它以满足您自己的特定清理要求。 GitHub 上有许多清理脚本,您可以按照提供的方式使用它们,也可以根据自己的需要进行修改。请注意,用户插件是 Artifactory 专业版的一项功能。 使用Artifactory REST API,您可以编写脚本来实现几乎任何自定义清理逻辑。您可以使用各种 search API 来查找要删除的工件,并使用 delete item API 来删除它们。

有关更多信息和示例,您可以查看Managing Disk Space Usage

【讨论】:

感谢您的回复。是的,它是快照 aritifactory。但是您认为我们应该编辑 Ant 脚本以删除最旧的文件,还是您认为这种内置机制会删除旧文件。 您还能告诉我更多关于“使用 Artifactory REST API 的外部脚本”的信息。 内置机制将负责删除旧快照。请注意,部署新快照后,旧快照将被删除。此外,这是在后台进程中完成的,该进程检查 Max Unique Snapshots 的值并删除超出该数量的最旧的快照。 ..感谢您的快速回复...我试图找出为 Rest API 提供的代码,我们可以使用哪种语言来实现这一点。我们可以使用powershell还是Ant脚本有能力接受这个......GET /api/build "uri": "http://localhost:8080/artifactory/api/build" "builds" : [ "uri" : "/wicket", "lastStarted" : ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ) , "uri" : "/jackrabbit", "lastStarted" : ISO8601 (yyyy-MM-dd'T'HH:mm:ss.SSSZ) ] 你可以使用任何可以发送 HTTP 请求并解析 JSON 响应的东西。请注意,REST API 文档显示了请求的格式和预期的响应(通常为 JSON 格式)。

以上是关于Ant/ivy 脚本有助于删除具有阈值的旧工件的主要内容,如果未能解决你的问题,请参考以下文章

PHP 中持续集成的构建工具(Ant、Ivy、Maven、Phing?)

常春藤从常春藤缓存中删除不需要的(旧)工件

Kafka 删除一个topic的旧消息

Ant Ivy 不会设置编译类路径

如何使用 Ant 和 Ivy 构建项目及其依赖项

在 netbeans 中使用 ant ivy