JenkinsCI-Pipline01

本文介绍了一个 Jenkins Pipeline 的示例配置,展示了如何通过定义 main 函数作为环境变量设置的基础,实现 test1 作为 mainjob 调用 test2 和 test3 两个 job 并行编译。同时介绍了如何传递 Branch 参数并在不同 job 间共享,以及如何处理失败情况和构建 smoke-test job 的逻辑。

  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] timeout
Timeout 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 Pipeline
Finished: SUCCESS

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值