Hudson如何删除我的构建创建的工件?

时间:2009-02-14 19:03:09

标签: build-process automation build-automation hudson

我们组织的自定义构建工具会写出大量的中间数据,如果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方法:/。

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

如果我在你的鞋子里,我会做的是以不同的方式解决问题。我会写一个专门删除你不想保留的东西的任务或脚本,并在每个工作结束时运行该任务或脚本。

Hudson假设您正在自行清理临时文件。如果没有发生这种情况,我不相信哈德森有任何帮助你的工具。

答案 2 :(得分:0)

如果不了解您的“自定义结帐流程”,很难回答,但通常所有项目的构建工件都是在除src之外的单个目录下创建的,例如: “建立”或“目标”。

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

看起来您的构建工件包含在相对于'src'的多个目录中:'obj','log'和'pkg'。你能介绍一个明确删除这些目录的“干净”目标吗?

答案 3 :(得分:0)

为什么在每次构建触发时都需要tgz归档?

  
    

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

  

将构建号提取到系统/构建工具的变量,以及3个简单的UNIX shell命令:   * 2用于obj和log中的目录删除   *一个用于按掩码删除包(需要注入变量的值)