如何在 Hudson 中删除不需要的构建工件

Posted

技术标签:

【中文标题】如何在 Hudson 中删除不需要的构建工件【英文标题】:How to delete unneeded build artifacts in Hudson 【发布时间】:2010-12-31 02:04:32 【问题描述】:

我有一个Hudson CI 服务器正在构建一个maven 构建。一个带有两个子项目的父项目。 maven 子项目之一创建了一个相当大的 .war (10MB) 文件,该文件存储在每个构建中。我想摆脱那个 .war 文件以节省磁盘空间,但我想将 Hudson 构建的所有其他内容存储在历史记录中(测试结果、图表等)。

.war 文件存放在jobs/PROJECT_NAME/modules/PACKAGE_NAME$SUB_PROJECT_NAME/builds/2009-12-23_11-59-11/archive/PACKAGE_NAME/SUB_PROJECT_NAME/1.0/SUB_PROJECT_NAME-1.0.war

我已尝试根据this SO question 使用作业配置,即归档工件丢弃除最后一个成功/稳定的工件以外的所有工件以节省磁盘空间。但这实际上会发生以下情况:

    jobs/PROJECT_NAME/builds/2009-12-29_17-23-39/archive/PROJECT_NAME/web/target/PROJECT_NAME-web-1.0.war 下为最后两个构建存储了一个附加副本。所以它实际上会增加一点磁盘空间消耗。 此 hudson 作业的网页包含指向最后两个构建中的 .war 文件的链接。

我的构建只是针对父 pom.xml 执行 clean install 目标。

那么如何配置 Hudson 服务器和/或 Maven 以自动从 jobs/PROJECT_NAME/modules 下删除构建工件并将它们留在 jobs/PROJECT_NAME/builds 下?

【问题讨论】:

【参考方案1】:

我使用post build task 来做一些文件复制/删除的东西。

【讨论】:

【参考方案2】:

我带着类似的问题来到这里;我的问题已通过“删除旧版本”复选框解决。如果您不关心像 OP 那样保留旧的构建数据,则此复选框是一个更简单的解决方案。

【讨论】:

各位,记得在保存后执行作业。【参考方案3】:

我不久前遇到了这个问题,只是使用了一个 cronjob:

10 * * * *  find jobs/PROJECT_NAME/modules/ -name "*[tejw]ar" -type f -exec rm -f  \;

每小时一次,它将从此目录(以及任何子目录)中删除所有 tar、ear、war 和 jar 文件。可能有一种更以哈德逊为中心的方式......

【讨论】:

以上是关于如何在 Hudson 中删除不需要的构建工件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Hudson 构建 Play 项目?

如何停止 Maven 的验证阶段重建工件?

如何从 Jenkins (Hudson) 卸载插件?

是否有将 Jenkins 的构建与 Maven (Nexus) 工件联系起来的插件

根据配置文件更改部署的工件名称

如何在Hudson中增加构建队列的数量?