您可以使用 Jenkins Pipeline 中的build job
步骤 (最低 Jenkins 要求: 2.130)。
这里是 build
步骤的完整 API: https://jenkins.io/doc/pipeline/steps/pipeline-build-step/
如何使用 build
:
job
: 构建下游作业的名称。可以是另一个 Pipeline 作业,但更常见的是 freestyle 或其他项目。- 如果作业位于此上游 Pipeline 作业的同一文件夹中,请使用简单名称;
- 您可以使用相对路径,例如
../sister-folder/downstream
; - 或者您可以使用绝对路径, 如
/top-level-folder/nested-folder/downstream
使用分支作为参数触发另一个作业
在我们公司中,许多分支包括“/”。您必须将任何“/”实例替换为“%2F”(因为它出现在作业的 URL 中)。
在此示例中,我们正在使用相对路径
stage('Trigger Branch Build') {
steps {
script {
echo "Triggering job for branch ${env.BRANCH_NAME}"
BRANCH_TO_TAG=env.BRANCH_NAME.replace("/","%2F")
build job: "../my-relative-job/${BRANCH_TO_TAG}", wait: false
}
}
}
使用构建编号作为参数触发另一个作业
build job: 'your-job-name',
parameters: [
string(name: 'passed_build_number_param', value: String.valueOf(BUILD_NUMBER)),
string(name: 'complex_param', value: 'prefix-' + String.valueOf(BUILD_NUMBER))
]
同时触发多个作业
来源:https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
有关并行处理的更多信息,请参见:https://jenkins.io/doc/book/pipeline/syntax/#parallel
stage ('Trigger Builds In Parallel') {
steps {
// Freestyle build trigger calls a list of jobs
// Pipeline build() step only calls one job
// To run all three jobs in parallel, we use "parallel" step
// https://jenkins.io/doc/pipeline/examples/#jobs-in-parallel
parallel (
linux: {
build job: 'full-build-linux', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]
},
mac: {
build job: 'full-build-mac', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]
},
windows: {
build job: 'full-build-windows', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]
},
failFast: false)
}
}
或者,另一种选择:
stage('Build A and B') {
failFast true
parallel {
stage('Build A') {
steps {
build job: "/project/A/${env.BRANCH}", wait: true
}
}
stage('Build B') {
steps {
build job: "/project/B/${env.BRANCH}", wait: true
}
}
}
}
build job: 'freestyle', parameters: [string(name: 'param1', value:'test_param'), string(name:'dummy', value: "${index}")]
。来源为:https://jenkins.io/doc/pipeline/examples/#jobs-in-parallel。 - BartBiczBożybuild job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]]
没有起作用,但是build job: 'RunArtInTest', parameters: [string(name: 'systemname', value: "${VALUE}")]
却有效。 - Alberto C