Jenkins只使用下游作业的子集加入插件

时间:2016-03-03 21:48:55

标签: jenkins continuous-integration

我正在使用Join Plugin来创建仅在多个作业完成后才能运行的作业。但是,在配置连接任务时,我似乎无法找到一种方法来声明仅在下游作业的子集完成后应该运行的连接。

以下面的管道为例:

Sample pipeline

setup-deployment是在build-core触发的所有任务完成后运行的连接任务。假设我想创建一个新任务build-artifacts,该任务仅取决于第二列上任务sonar-appcobertura-app的完成情况。这可能是使用Join插件或其他类似插件吗?

1 个答案:

答案 0 :(得分:0)

我认为你可以通过Jenkins Build Flow plugin实现这一目标。

如果你必须设计复杂的工作流程,这个插件非常强大。

以下是我的构建流程之一的示例:

// Format the build ID (long and short)
TimeZone.setDefault(TimeZone.getTimeZone('UTC'))
def now = new Date()
def short_date = now.format("yyyyMMdd")
def long_date = now.format("yyyyMMdd_HHmm")

// Launch the OpenDJ nightly build (try 3 times if random test failures)
ignore(UNSTABLE) {
    retry (3) {
        build("OpenDJ_-_nightly_-_build", BUILD_ID_SHORT: short_date, BUILD_ID_LONG: long_date)
    }
}

// Build the standard packages
parallel (
    { build("OpenDJ_-_nightly_-_DEB", BUILD_ID_SHORT: short_date, BUILD_ID_LONG: long_date) },
    { build("OpenDJ_-_nightly_-_RPM", BUILD_ID_SHORT: short_date, BUILD_ID_LONG: long_date) },
    { build("OpenDJ_-_nightly_-_MSI", BUILD_ID_SHORT: short_date, BUILD_ID_LONG: long_date) },
    { build("OpenDJ_-_nightly_-_ZIP_OEM", BUILD_ID_SHORT: short_date, BUILD_ID_LONG: long_date) }
)

// Build the DEB and RPM OEM packages (they depend on the previous builds)
parallel (
    { build("OpenDJ_-_nightly_-_DEB_OEM", BUILD_ID_SHORT: short_date, BUILD_ID_LONG: long_date) },
    { build("OpenDJ_-_nightly_-_RPM_OEM", BUILD_ID_SHORT: short_date, BUILD_ID_LONG: long_date) },
)

结果:

enter image description here