如何在 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 中删除不需要的构建工件的主要内容,如果未能解决你的问题,请参考以下文章