JenkinsCI-Pipline01

来源:互联网 发布:sqlserver generator 编辑:程序博客网 时间:2024/06/05 19:14

  Pipline的介绍使用见官网:https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+as+Code

示例1:

需求说明:test1,作为main job调用test2,test3,两个job,并行编译,在test1中传入Branch参数,并使得test2,test3使用同样的branch,而test2,test3 fail不会使得test1 fail,test会等待test2,test3构建完成之后才停止。如果在build test1之前 勾选了smoketest选项那么构建smoke-test job,不必等待该job的结果。smoketest为并行编译总体完成之后才编译。test2,test3同样要有Branch parameter.main函数可以作为一个环境变量设置函数。

这个pipline是在test1上面的。


/** define main**/def main() {    return {        node('master') {            try {                echo 'hello world'            } catch (err) {                echo "main job error: Marking job as failed"            }        }    }}/** define test2**/def test2() {    return {        try {            build job: "test2",            parameters: [                [$class: 'StringParameterValue', name: "Branch", value: "$Branch"],            ]        } catch (err) {            echo "test2 error: Ignoring status"        }    }}/** define test3**/def test3() {    return {        try {            build job: "test3",            parameters: [                [$class: 'StringParameterValue', name: "Branch", value: "$Branch"],            ]        } catch (err) {            echo "test3 error: Ignoring status"        }    }}/** define parallel task,60 minutes is a limit time*/def stepsForParallel = [:]stepsForParallel['main'] = main()stepsForParallel['test2'] = test2()stepsForParallel['test3'] = test3()stage('TOTAL') {    try {        timeout(time:60, unit:'MINUTES') {            stepsForParallel.failFast = true            parallel stepsForParallel        }    }catch (err) {        throw err    }}/** * Tests job: DON'T WAIT ! */if (smoketest == "true") {    build job: "smoke-test",    wait: false}

OutPut:

Started by user louis[Pipeline] stage[Pipeline] { (TOTAL)[Pipeline] timeoutTimeout set to expire in 1 hr 0 min[Pipeline] {[Pipeline] parallel[Pipeline] [main] { (Branch: main)[Pipeline] [test2] { (Branch: test2)[Pipeline] [test3] { (Branch: test3)[Pipeline] [main] node[main] Running on master in /var/lib/jenkins/workspace/test1[Pipeline] [test2] build (Building test2)[test2] Scheduling project: test2[Pipeline] [test3] build (Building test3)[test3] Scheduling project: test3[Pipeline] [main] {[Pipeline] [main] echo[main] hello world[Pipeline] [main] }[Pipeline] [main] // node[Pipeline] [main] }[test2] Starting building: test2 #12[test3] Starting building: test3 #7[Pipeline] [test3] }[Pipeline] [test2] }[Pipeline] // parallel[Pipeline] }[Pipeline] // timeout[Pipeline] }[Pipeline] // stage[Pipeline] build (Building smoke-test)Scheduling project: smoke-test[Pipeline] End of PipelineFinished: SUCCESS

原创粉丝点击