成功最有效的方法就是向有经验的人学习!

如何编写pipeline流水线

pipeline流水线编写推荐使用声明式
可以按我以下的模板套路来编写,接下来我也举一些例子

#!groovy
string workspace = "/opt/jenkins/wordspace"  // 自定义工作目录
pipeline {
    // ========agent语句块开始========
    agent {
        node {
            label "master"  // 指定运行节点的标签或者名称
            customWorkspace "${workspace}"  // 自定义工作目录,调用上面的变量(可选)
        }
    }
    // ======agent块结束======

    options {  // 运行选项按需指定,不是必须的
        timestamps()  // 日志会有时间,便于排查日志
        skipDefaultCheckout()  //删除隐式checkout scm语句,声明式的脚本默认会去检查有没有配代码库,如果有的话会自动下载代码,但我没有必要去让他下载,所以这里删除
        disableConcurrentBuilds()  // 禁止并行,根据项目需要,有些项目是不能并行的,可以使用这句。
        timeout(time: 1, unit: 'HOURS')  // 设置流水线超时时间,在企业中使用流水线时会遇到很多构建超时了,一直卡在那里,一直失败,这样会消耗很多资源,占用构建队列,导致构建队列出现堵塞这种情况,所以这里设置一小时超时,这个时间已经很长了。
    }
    // ===========options语句块结束==========

    // ============stages语句块开始《一个或多个》====================
    stages {
        stage("GetCode"){  // 这是第一个小阶段的名称
            steps{  // 步骤
                timeout(time:5,unit:"MINUTES"){  // 步骤超时时间
                    script{  // 填写运行代码
                        println("获取代码")
                    }
                }
            }
        }
        //  第一个小阶段结束

        stage("Build"){
            steps{
                timeout(time:20, unit:"MINUTES"){
                    script{
                        println("应用打包")
                    }
                }
            }
        }
        //  第二个小阶段结束

        stage("CodeScan"){
            steps{
                timeout(time:30, unit:"MINUTES"){
                    script{
                        print("代码扫描")
                    }
                }
            }
        }
        //  第三个小阶段结束
    }

    //  ======================stages阶段结束================

    //  ===============构建后执行post===================
    post {
        //  always指不管结果如何都执行
        always {
            script{
                println("always")
            }
        }
        //  always语句块结束

        //  success指构建成功才会执行,一般在企业中可能会触发一个状态作一个变更
        success {
            script{
                currentBuild.description += "\n 构建成功!"  // currentBuild是一个全局变量,description是构建描述
            }
        }
        //  success语句块结束

        //  failure指构建失败时执行,例如通知管理员
        failure {
            script{
                currentBuild.description += "\n 构建失败!"
            }
        }
        //  failure语句块结束

        //  aborted指任务取消时执行,一般也会做一个通知,和构建失败的对待方式差不多,如果有什么资源需要回收的可以写在这里
        aborted {
            script{
                currentBuild.description += "\n 构建取消"
            }
        }
        //  aborted语句块结束
    }
    //  ================post语句结束=======================
}
赞(5) 打赏
未经允许不得转载:陈桂林博客 » 如何编写pipeline流水线

大佬们的评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

全新“一站式”建站,高质量、高售后的一条龙服务

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏