2010-12-13 200 views
2

我已经设置了我的哈德森工作A.工作A取决于工作B和C.我已经用“构建其他项目”来设置它们。尽管每个作业都位于工作空间中的单独目录中(默认结构),但这种方式很好。但我需要作业B和C作业空间(根文件夹)。Hudson依赖关系

我已经考虑两种方法:

  1. 更改工作区来找工作的,并通过“在其他项目上的触发参数构建”变量推到作业,然后使用Ant构建脚本将它们复制到该位置,因为我无法找到一个选项来更改作业B或C应该去的文件夹
  2. 触发作业B,然后从构建脚本作为作业A的一部分,然后C。这是通过远程调用(发现它在某处stackoverflow),但该选项在我的配置中缺失,我找不到可以添加它的任何插件。

我理想的办法是从那里使用Ant构建脚本和触发作业B和C antsvn或类似的东西。但我无法找到一个坚实的例子。

为什么我需要这种方式的原因很简单 - 作业B是作业A和作业必不可少的CMS C有Python脚本需要在新版本登陆到生产服务器之前执行(这已经用py完成了-蚂蚁)。

或者也许有更好的方法来管理这样的依赖关系。任何帮助表示赞赏。

我希望它是有道理的。

回答

4

将作业“B”和“C”想象为产生作业“A”需要的“工件”。然后,只需构建作业“A”,您只需导入由作业“B”和“C”生成的工件。

你的工作不应该共享工作区。否则如果在作业“B”或“C”被触发时作业“A”正在建立,会发生什么情况?你将有多个构建一次进行。但是,如果您从作业“B”和“C”中分离出“A”需求,则可以让作业“A”导入这些依赖关系。这样做有两种方式:

  • 的辛苦,但正确方式:你应该创建一个版本库在那里工作可以获取他们所需要的工件。如果这听起来Mavinish给你,那好吧。但是,我已经使用了Maven架构,没有Maven项目,它工作正常。您可以使用Artifactory或Nexus之类的东西作为您的发布存储库。然后使用wgetcurl从存储库获取项目,并使用Maven的deploy:deploy-file插件发送这些内容。您需要Maven(这是一个Java进程)运行deploy:deploy-file,但您不需要Maven项目,甚至不需要Java项目。 deploy:deploy-file插件甚至不需要Maven pom.xml文件。把它看作更像是一个命令行工具,将东西发送到你的发布版本库。
  • 容易,但不正确方式:哈德森有Copy Artifacts plugin,你可以用它来做到这一点。问题在于它很容易设置,但很难开始追踪。另外,它使你依赖于一个非常具体的工具。如果您决定离开哈德森,您可能无法复制此功能。