• 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}
    
    • 1

    其中,PARAM_NAME 是 B 项目中定义的参数名称,VALUE 是您希望传递给 B 项目的实际值。例如:PARAM_NAME=example_value

    如果选择了 “Current build parameters”(当前构建参数),那么 A 项目中定义的所有构建参数都将自动传递给 B 项目

    在参数字段中,使用 Shell 脚本来获取当前时间并将其赋值给参数。例如,要将当前日期以 “YYYY-MM-DD” 格式传递给 B 项目,您可以使用以下命令:

    PARAM_NAME=$(date +%F)
    
    • 1

    这将使用 date 命令获取当前日期,并将其格式化为 “YYYY-MM-DD” 并赋值给 PARAM_NAME 参数。

    如果您还想添加其他参数,您可以使用换行符 \n 将它们分隔开,如下所示:

    PARAM_NAME=$(date +%F)\nANOTHER_PARAM=value
    
    • 1

    3.实际使用案例

    项目A,会传递VERSION选项参数和预定义参数DIRNAMES
    在这里插入图片描述
    在这里插入图片描述
    项目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 + '" '
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
  • 相关阅读:
    配置设备远程管理—eNSP
    Java中wait和notify详解
    leetcode周赛第二题6230. 长度为 K 子数组中的最大和
    【AcWing】AcWing 5180. 正方形泳池(秋季每日一题2023)(排序 + 边枚举边更新)
    leetcode:169多数元素------摩尔投票法
    STC15单片机-数码管显示PCB板温度(TM1620驱动芯片使用介绍)
    七、文件包含漏洞
    Vue基础-05
    rocketmq-spring : 实战与源码解析一网打尽
    [Linux]如何配置定期任務腳本,並將執行結果寄到外部郵箱? (上)
  • 原文地址:https://blog.csdn.net/Mico18/article/details/132975418