Jenkins安排了同一版本的多个版本

时间:2014-06-19 15:22:41

标签: jenkins triggers

我有一个项目,有3-5个不同的mercurial分支在任何时候。我想安排每周一次的Jenkins测试,以便在所有相关分支上运行我们的测试。

我认为,我想要的是一个参数化构建,以分支名称作为参数,然后有一个分支列表,每周一次,使用列表中的每个参数运行参数化构建。

但是,我发现您无法将参数发送到触发的构建中。我假设有一个插件。 job Generator是否是正确的插件?还有更好的东西吗?

我应该提一下,目前,我们正在使用多个SCM执行此操作,并且构建体具有一个遍历每个目录并运行测试的sh循环。这实在是效率低下,而且难以维持......

1 个答案:

答案 0 :(得分:0)

我可以提出一个解决方案,但它不能被称为优雅。

  1. 首先,您需要创建multi-configuration项目(又名Matrix项目) enter image description here

  2. 在此项目中,您需要声明一个node(它可能已经存在master节点)
    enter image description here
    一种axis(例如BRANCH - 请注意不要使用Jenkins Set Environment Variables variables)与每个分支对应的值(例如default,{{1 },testing等。) enter image description here

  3. 在您需要添加项目devel操作后,需要检查build变量(之前声明为$ environment)并发现此版本已启动的分支(使用BRANCH)举例说明了主要思想 enter image description here

  4. 最后,您需要手动从相应的分支获取源。

  5. 所有分支的下一个构建步骤都可以相同 enter image description here

  6. 这种方法有一些缺点:
    1.您无法通过存储库中的更改触发此项目(您可以使用bash仅检查一个分支) 2.所有子项目即使没有变更也会重建 3.仅适用于静态定义的分支 4.不优雅。

    但与 Mercurial plugin 构建相比,它有一个优势:
    1.分支的所有工件(和构建日志)都存储在单独的目录中(因为它们是独立的子项目)。