4.jenkins实现job动态编排-主job通过入参控制子job的编排执行

前言

jenkins实现job依赖编排”文中实现了不同层级job依次执行,但前提要将所有level型job都创建出来,每个level需要在脚本中写死构建哪些job,若只想执行某些job,这样是不是不太灵活??

pipeline代码


def load_job(job_name) {

    return {

        build job: job_name, parameters: [

        string(name: 'gitl_branch', value: env.gitl_branch)

        ]  

    }

}





def load_level_jobs(levelname,jobnames){

 jobnames.collectEntries {

        ["${levelname}:${it}": load_job(it)]

    }

}



pipeline{

    agent any

// parameters {

//	string(name: 'gitl_branch', defaultValue: 'xxxxxx', trim: true)

// {"level1":["composeJob_1_1","composeJob_1_2"],"level2":["composeJob_2_1"],"level3":["composeJob_3_1","composeJob_3_2"]}

//	string(name: 'compose_jobs', trim: true, description: 'map:{"level1":["job1","job2","job3"],"level2":["joba","jobb"]}')

//	}

    options{

        parallelsAlwaysFailFast()

    }

    stages{

        stage("config") {

            steps {

                script {

                    println("信息:"

                            + "\n jobsLevel:" + currentBuild.projectName

                            + "\n gitl_branch:" + env.gitl_branch

                            + "\n runJobs:" + env.compose_jobs

                    )

                    

     level_jobs = readJSON text : env.compose_jobs

     //level_jobs.each { 

     //	println(it)

     //}



                }

            }

        }

        stage("run jobs") {

            steps {

                script {

                 level_jobs.each { 

      stage(it.key){

       if(!(it == null || it.value == null || it.value.size() <= 0)){

        println("======level:[" + it.key + "], build jobs:" + it.value + "======")

        parallel load_level_jobs(it.key,it.value)

       }else{

        println("no jobs to run")

       }

      }

     }

                

     //level_jobs.each { 

     //	println(it.key + "====" + it.value)

     // 

     // // parallel firstBranch: {

     // // // do something

     // // }, secondBranch: {

     // // // do something else

     // // },

     // // failFast: true|false

     //	parallel load_level_jobs(it.key,it.value)

     //}

                }

            }

        }

    }

    

    post {

        failure {

            script {

                echo "${currentBuild.projectName}构建失败!!"

            }

        }

        success {

            script {

                echo "${currentBuild.projectName}构建成功!!"

            }

        }

    }



}

job配置

在这里插入图片描述

使用jenkins api从外部调起主job(执行效果)

python、java等都有对应api包,其实本质上都是调用jenkins rest api,所以也可以直接用postman直接请求rest接口

案例使用python jenkins api测试

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzw@sirius

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值