Jenkins 在pipeline中触发其他job

1,013次阅读
没有评论
Jenkins

对于jenkins发布项目,无非就是自动触发或手动触发,自动触发一般都是由项目需求新增或更改才会引起。而这里不赘述自动触发,这里主要讲下手动触发的一些骚操作

手动触发任务运行很简单,打开控制台任务点击触发即可,但是这只能触发一个任务的运行,如果有多个任务呢?也可以一个一个点·~,如果有100+个任务呢?会不会点漏?会不会点错?会不会点到忘了进度?

针对这个问题我们可以试想一下,我们目前项目镜像 有两部分,一部分是基础系统镜像(centos/ubuntu/openelur),一个是应用和代码镜像(java/node/php),t倘若多个业务应用的系统镜像需要变更,这时就需要每个项目都触发一次。我们先看下在一个pipeline中如何调用另外一个pipeline

build job: '<Project name>', parameters: [[$class: 'StringParameterValue', name: 'param1', value: 'test_param']]

大致的样例如下

pipeline {
    agent any
    stages {
        stage('Start') {
            steps {
                sh 'ls'
            }
        }

        stage ('Invoke_pipeline') {
            steps {
                build job: 'pipeline1', parameters: [
                string(name: 'param1', value: "value1")
                ]
            }
        }

        stage('End') {
            steps {
                sh 'ls'
            }
        }
    }
}

如上面所示,在pipeline中调用另外一个job,这个可以放在stage中,一般我们也可以放在post中来实现成功则运行下一条或失败运行其他联动job

post {      
      always {
            echo 'We are in post part and Jenkins build with QA tests is going to be triggered.'
            // For triggering Pipeline
            build job: 'WGF-QA WITH ALLURE', parameters: [string(name: 'QA-Automation', value: 'value from Build pipeline')]

      } 
    }

第一步已经解决了,那么如何多个呢?一个一个写到pipeline中?就算写到pipeline中,如何获取多个job?总不能还是一个一个手动找吧?这时我们就需要用到jenkins的api了

xadocker
版权声明:本站原创文章,由 xadocker 2020-07-12发表,共计996字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码
载入中...
0.274