哈德森依赖

时间:2010-12-13 15:12:47

标签: ant build-process continuous-integration hudson

我已经设置了我的哈德森工作A.工作A取决于工作B和C.我已经设置了“构建其他项目”。虽然每个作业都在我的工作区(默认结构)中的单独目录中,但这种方法效果很好。但是我需要在作业工作区(根文件夹)中使用作业B和C.

我考虑了两种方法:

  1. 更改作业A的工作区并通过“在其他项目上触发参数化构建”将该变量推送到作业,然后使用ant构建脚本将它们复制到该位置,因为我无法找到更改作业B的文件夹的选项或者C应该去
  2. 作为作业A的一部分,从构建脚本中触发作业B和C,这是通过远程调用(在stackoverflow上找到它)完成的,但是我的配置中缺少该选项,我找不到任何可以添加它的插件。
  3. 对我来说,理想的方法是使用ant构建脚本并使用antsvn或类似的东西从那里触发作业B和C.但我找不到一个可靠的例子。

    我想要这种方式的原因很简单 - 作业B是CMS,它对于作业A是必不可少的,作业C具有需要在新版本可以降落到生产服务器之前执行的python脚本(这已经通过py-完成了蚁)。

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

    我希望这是有道理的。

1 个答案:

答案 0 :(得分:4)

将乔布斯“B”和“C”视为生成“工作”A所需的“工件”。然后,您需要做的就是在构建Job“A”时导入Jobs“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文件。可以把它想象成一个命令行工具,将东西发送到你的发布库。
  • 简单但不正确的方式:Hudson有Copy Artifacts plugin可用于执行此操作。问题是它很容易设置,但很难开始跟踪。此外,它使您依赖于一个非常具体的工具。如果您决定离开Hudson,则可能无法复制此功能。
相关问题