1

我需要在 jenkins 中为多个项目批量触发 maven 发布插件。它们不相互依赖,其中一些具有模块。

在 jenkins 中,您可以一个一个地发布它们,但我正在寻找一种方法来一次触发所有这些,并可能用相同的发布号标记所有这些。

例如

Project A 
Project B 
... 
Project N

Maven Release (some select query) 
Next Snapshot version (1.1.0-SNAPSHOT)
Next release version (1.0.0)

然后项目 A..N 将与单个构建触发器一起发布.. 有什么可用的吗?

我知道多插件和批量插件,但它们似乎没有构建 Maven 版本。

/谢谢

4

2 回答 2

2

我在看以下一个..似乎有帮助.. https://dev.c-ware.de/confluence/display/PUBLIC/Developing+a+Jenkins+Plugin+for+the+Maven+Release+Plugin

于 2013-02-06T17:01:20.777 回答
2

根据此答案,您可以构建作业和参数列表,然后并行运行作业:

stage('testing') {
  def jobs = [:]

  [1,2,3,4,5].each{
    i -> jobs["Test${i}"] = {
        build job: 'Test', 
        parameters: [string(name: 'theparam', value: "${i}")],
        quietPeriod: 2
    }
  }
  parallel jobs
}

它使用数字作为名称,但您可以使用任意名称。

您可以变得更复杂并将要发布的作业列表下载到文件中并运行文件中命名的作业:

stage ('download release spec') {
    dir('${WORKSPACE}') {
        sh 'curl -LO https://my.server.com/path/$MASTER_RELEASE/jobs.txt'
    }
}
stage('run jobs in spec') {
    dir('${WORKSPACE}') {
        // read our one line of jobs to run and split it into an array of jobs to run
        def fileData = readFile('jobs.txt')
        def names = fileData.tokenize( ',' )

        // short hand for creating an empty map
        def jobs = [:]

        // https://stackoverflow.com/a/51306175/329496
        names.each{
            i -> jobs["${i}"] = {
                println "parallel build job: $i"
                build job: "${i}"
            }
        }
        parallel jobs
    }
} 

第一个代码片段显示了如何将参数传递给构建。Groovy 有一些用于合并列表的隐藏功能,例如转置,可以轻松地将“jobs.txt”和“params.txt”合并到一个列表中,您可以运行该列表.each以提取作业名称及其参数。您可以将一些 sed、awk 或 python 放入第一阶段,以计算结构化发布文档中的所有文件。这样,您的构建可以下载格式良好的发布文档并将其转换为一堆作业和发布参数以运行。

于 2018-12-13T16:12:39.820 回答