2009-02-14 48 views
0

我们组织的自定义构建工具写出了大量的中间数据,如果Hudson能够检测到哪些文件是作为构建的一部分创建并存档的,我希望它可以。我不确定它是否已经这样做,但如果它确实没有用户可见的解释,并且确实删除一个构建不会删除它的输出。哈德森如何删除我的构建创建的工件?

这里是我想要的。假设我从一个裸露的工作区开始。构建1之后,我有这样的:

ws/ 
    src/... 
    obj/ 
    1/... 
    log/ 
    1/... 
    pkg/ 
    pkg-1.tgz 

现在,我运行建立2:

ws/ 
    src/... 
    obj/ 
    1/... 
    2/... 
    log/ 
    1/.. 
    2/.. 
    pkg/ 
    pkg-1.tgz 
    pkg-2.tgz 

源代码检出到ws/src每个构建;有一个自定义的结帐过程,所以我不能使用svn RCS方法:/。

当我删除一个构建,我想删除所有来自该构建。我可以这样做吗?

回答

3

Hudson的方法是在构建开始时清理所有临时文件,然后使用Hudson的构件存档工具保存每个构建的输出 - 指定pkg/**/*。tgz作为“存档工件“后建立步骤,然后tgz文件将全部复制到作业特定的存储区域。

工作区只是一个工作区 - 它不适合长期存储。

0

如果不理解您的“自定义结账过程”,很难回答,但通常项目的所有构建工件都创建在src以外的单个目录下,例如, “构建”或“目标”。

这样,项目的“干净”目标可以简单地删除该目录,并且您可以指示Hudson为每个构建包含此目标。

看起来你的构建工件包含在多个相对于'src'的目录中:'obj','log'和'pkg'。你能否引入一个“干净”的目标,将明确删除每个目录?

+0

我可以,但是如何让哈德森在我删除工作时运行? – 2009-02-14 20:45:24

1

我会做什么,如果我在你的鞋子,将是以不同的方式解决问题。我会编写一个任务或脚本,专门删除您不想保留的所有内容,并在每项作业结束时运行该任务或脚本。

哈德森假设你正在自己清理临时文件。如果这没有发生,我不认为哈德森有任何设施可以帮助你。

0

为什么你需要tgz档案制作在每一个构建触发?

当我删除一个构建时,我想删除来自该构建的所有内容。我可以这样做吗?

提取版本号到系统/构建工具的变量,和3个简单的UNIX shell命令: * 2用于目录中的obj删除和日志 *一个用于包删除由掩模(需要注入变量的值)

相关问题