Jenkins “Trigger/call builds on other project“用法及携带参数

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
Jenkins “Trigger/call builds on other project“用法及携带参数_第1张图片
Jenkins “Trigger/call builds on other project“用法及携带参数_第2张图片
项目B

import java.text.SimpleDateFormat
import java.util.Date

pipeline {
	agent none
	environment {
        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 $createdir
                    echo $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.path
        def path = file.path;
        path = path.replace(file.name,"");
        echo path
        sh '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 + '" '
    }
}

你可能感兴趣的:(jenkins)