我需要在jenkins中为多个项目批量触发maven发布插件。它们彼此不相关,其中一些有模块。
在jenkins中你可以逐个释放它们,但是我正在寻找一种方法来同时触发所有并且可能用相同的版本号标记所有。
E.g。
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版本。
/感谢
答案 0 :(得分:2)
我正在看下面的一个..似乎有帮助.. https://dev.c-ware.de/confluence/display/PUBLIC/Developing+a+Jenkins+Plugin+for+the+Maven+Release+Plugin
答案 1 :(得分:0)
根据this answer you,可以构建作业和参数列表,然后并行运行作业:
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具有一些用于合并列表的隐藏功能,例如transpose,可以轻松地将“ jobs.txt”和“ params.txt”合并到列表中,然后可以运行.each
来提取列表。作业名称及其参数。您可以将sed,awk或python放入第一阶段,以计算结构化发行文档中的所有文件。这样,您的构建可以下载格式正确的发行文档,并将其修改为一堆作业和发行参数以运行。