我们组织的自定义构建工具会写出大量的中间数据,如果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方法:/。
当我删除构建时,我想删除来自该构建的所有内容。我可以这样做吗?
答案 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中的目录删除 *一个用于按掩码删除包(需要注入变量的值)