1.功能
“Trigger/call builds on other project” 功能是 Jenkins 中的一个特性,允许您在某个项目的构建过程中触发或调用另一个项目的构建。
当您在 Jenkins 中启用了 “Trigger/call builds on other project” 功能并配置了相应的触发条件后,当主项目构建成功或满足触发条件时,Jenkins 将自动触发所配置的目标项目的构建。
这种功能通常用于创建复杂的构建流水线或构建依赖关系。例如,您可以将多个项目串联起来,使得一个项目的构建成功触发下一个项目的构建,以实现整个软件开发、测试和部署流程的自动化。
通过 “Trigger/call builds on other project” 功能,您可以创建复杂的构建逻辑,并且将不同的项目之间形成依赖关系,以便实现更高级的自动化和集成。
2.携带参数的两种办法
在 “Triggering Options”(触发选项)中,查找 “Parameters”(参数)部分。选择 “Predefined parameters”(预定义参数)或 “Current build parameters”(当前构建参数),具体取决于您希望如何传递参数。
如果选择了 “Predefined parameters”(预定义参数),您可以按照以下格式提供参数:
PARAM_NAME=${VALUE}
其中,PARAM_NAME 是 B 项目中定义的参数名称,VALUE 是您希望传递给 B 项目的实际值。例如:PARAM_NAME=example_value
如果选择了 “Current build parameters”(当前构建参数),那么 A 项目中定义的所有构建参数都将自动传递给 B 项目。
在参数字段中,使用 Shell 脚本来获取当前时间并将其赋值给参数。例如,要将当前日期以 “YYYY-MM-DD” 格式传递给 B 项目,您可以使用以下命令:
PARAM_NAME=$(date +%F)
这将使用 date 命令获取当前日期,并将其格式化为 “YYYY-MM-DD” 并赋值给 PARAM_NAME 参数。
如果您还想添加其他参数,您可以使用换行符 \n 将它们分隔开,如下所示:
PARAM_NAME=$(date +%F)\nANOTHER_PARAM=value
3.实际使用案例
项目A,会传递VERSION选项参数和预定义参数DIRNAMES
项目B
import java.text.SimpleDateFormat
import java.util.Datepipeline {agent noneenvironment {createdir = getVERSION()dirname = "${params.DIRNAMES}"}stages {stage('初始化') {agent { label "10.101.11.55" }steps {script {wrap([$class: 'BuildUser']) {buildName "#${BUILD_NUMBER}_${BUILD_USER}"}}cleanWs()}}stage('上传到文档管理系统') {agent { label "10.101.11.55" }steps {script {sh'''#软链接#cd $WORKSPACE/#ln -s /jenkins/product/${dirname}/${createdir} ./#ls $WORKSPACE/echo $createdirecho $dirname'''}}}}
}def getVERSION() {if (params.VERSION && !params.VERSION.trim().isEmpty()){return params.VERSION} else {def dateFormat = new SimpleDateFormat("yyyyMMdd")return dateFormat.format(new Date())}
}
def uploadFolder(url,folder,dirname){def files = findFiles(glob: "$folder")for(file in files){echo file.pathdef path = file.path;path = path.replace(file.name,"");echo pathsh 'curl -i -X POST "' + "$url" + '" -H "Content-Type: multipart/form-data" -F "file=@' + file.path + '" -F "user=test" -F "userName=test" -F "path=${dirname}/' + path + '" '}
}