| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | @Library('devops') _pipeline {    agent {label 'jenkins-slave-jnlp'}    environment {  // https://stackoverflow.com/questions/53541489/updating-environment-global-variable-in-jenkins-pipeline-from-the-stage-level        NAME="admin-tmpl"        NAMESPACE="oppc-rcyj-web"        SERVER_PORT="80"    }    options {        // timestamps()  //日志会有时间        skipDefaultCheckout()  //删除隐式checkout scm语句        // disableConcurrentBuilds() //禁止并行,会列队式等前面的任务完才进行下一个任务        timeout(time: 1, unit: 'HOURS')  //流水线超时设置1h    }    stages {        stage('Init'){            steps {                script{                    // 【测试环境】变量                    env.INGRESS_HOST='admin-tmpl-test.rencaiyoujia.cn'                    env.INGRESS_TLS_SECRET="rencaiyoujia-tls-secret"                    env.REPLICAS="1"  //deployment的副本数                    KUBECONTEXT = "k8s-test-admin"  //测试环境k8s                    NPM_RUN_BUILD_CMD="npm run build:test"                    DOCKERFILE_NAME="Dockerfile"                    // 【生产环境】变量                    if( "${BRANCH_NAME}"== "master"){                        env.INGRESS_HOST='admin-tmpl.rencaiyoujia.com'                        env.INGRESS_TLS_SECRET="rencaiyoujia-tls-secret"                        env.REPLICAS="2"                        KUBECONTEXT="k8s-prod-admin"  //生产环境k8s                        NPM_RUN_BUILD_CMD="npm run build:prod"                        DOCKERFILE_NAME="Dockerfile"                    }                    // 【开发环境】变量                    if( "${BRANCH_NAME}"== "dev"){                        env.INGRESS_HOST='admin-tmpl-dev.rencaiyoujia.cn'                        env.INGRESS_TLS_SECRET="rencaiyoujia-tls-secret"                        env.REPLICAS="1"                        KUBECONTEXT="k8s-dev-admin"  //开发环境k8s                        NPM_RUN_BUILD_CMD="npm run build:dev"                        DOCKERFILE_NAME="Dockerfile"                    }                }            }        }        stage('Checkout') {            steps {                checkout scm            }        }         stage('npm打包') {            steps {                script{                                // sh 'npm config set registry https://registry.npm.taobao.org'                    sh 'npm install --registry=https://registry.npm.taobao.org'                    sh "${NPM_RUN_BUILD_CMD}"                }            }                        }                stage('DockerBuild') {            steps {                script{                    sh "rm -rf docker/dist;mv dist docker"                    devops.docker(env.NAME,dockerfile:"docker/${DOCKERFILE_NAME}",context:"docker").build().push()                }            }        }        stage('Test') {            steps {                echo 'Testing..'            }        }                stage('Deploy') {            parallel {                stage('deploy ingress') {                    when {                        expression { env.INGRESS_HOST != null }                    }                    steps{                        sh """envsubst < k8smanifests/svc.yaml | kubectl --context ${KUBECONTEXT} apply -f - ;\                            envsubst < k8smanifests/ingress.yaml | kubectl --context ${KUBECONTEXT} apply -f - ;\                        """                          }                }                stage('Deploy') {                    steps{                        sh """envsubst < k8smanifests/deploy.yaml ;\                            envsubst < k8smanifests/deploy.yaml | kubectl --context ${KUBECONTEXT} apply -f - ;\                        """                                              }                }            }        }    }    post{        success{            script{                devops.dingtalk(env.NAME,env.DOCKERIMAGE,"构建成功 ✅")            }        }        failure{            script{                devops.dingtalk(env.NAME,env.DOCKERIMAGE,"构建失败 ❌")            }        }        unstable{            script{                devops.dingtalk(env.NAME,env.DOCKERIMAGE,"不稳定构建 ✅")            }        }        aborted{            script{                devops.dingtalk(env.NAME,env.DOCKERIMAGE,"暂停或中断 ❌")            }        }    }}
 |