pipeline{
    // 指定运行此流水线的节点
    agent{
        node{ label "master" }
    }
  
    // 管道运行选项
    options{
        buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '5', numToKeepStr: '5')
        disableConcurrentBuilds()
        skipDefaultCheckout true
        timeout(5)
        retry(3)
        timestamps()
    }
  
    // 流水线环境变量
    environment{
         VERSION = "1.1.1"
          ENV_TYPE = "DEV"
    }
  
    // 流水线参数
    parameters{
        // 字符串参数
        string defaultValue: 'jenkins', description: '输入用户名', name: 'USER_NAME', trim: true
        // 选项参数
        choice choices: ['yes', 'no'], description: '是否跳过发布', name: 'SKIP_DEPLOY'
    }
  
    // 流水线的阶段
    stages{
        // 阶段1,获取代码
        stage("CheckOut"){
            // 阶段级别环境变量
            environment{
                ENV_TYPE = "TEST"
            }
            options{
                timeout(5)
                retry(3)
            }
            steps{
                script{
                    println("获取代码...")
                    echo "hello world"
                    // 调用变量
                    echo "${ENV_TYPE}"
                    // 调用全局变量
                    echo "${env.JOB_NAME}"
                    // 调用参数变量
                    echo "用户名: ===> ${params.USER_NAME}"
                    echo "choice 是否跳过发布 ===> ${params.SKIP_DEPLOY}"
                }
            }
        }
        stage("Build"){
            steps{
                script{
                    println("运行构建...")
                }
            }
        }
        stage("test"){
            steps{
                script{
                    echo "=======> test"
                }
            }
            // 这个post 针对stage("test")
            post{
                success{
                    script{
                        echo "收集测试报告"
                    }
                }
            }
        }
        stage("Deploy"){
            // 阶段运行,条件判断
            when{
                allOf{
                    environment name: 'ENV_TYPE', value: 'DEV'
                    environment name: 'VERSION', value: '1.1.1'
                }
            }
            steps{
                script{
                    echo "Deploy dev..."
                }
            }
        }
    }
    // 这个post,针对整个pipeline
    post{
        always{
            script{
                println("流水线结束后,经常做的事情")
            }
        }
        success{
            script{
                println("流水线成功后,要做的事情")
            }
        }
        failure{
            script{
                println("流水线失败后,要做的事情")
            }
        }
        aborted{
            script{
                println("流水线取消后,要做的事情")
            }
        }
    }
}
最后修改:2022 年 03 月 25 日
如果觉得我的文章对您有用,请随意赞赏!