def projectName = 'brandkbs2'
def projectType = 'application'
def pmName = '沈君杰'
def pmMail = 'shenjunjie@zhiweidata.com'
def opName = '张金晓'
def opMail = 'tom@zhiweidata.com'
pipeline {
    agent {label 'jenkins-jnlp'}

    triggers {
        GenericTrigger(
         genericVariables: [
          [key: 'ref', value: '$.ref']
         ],
         causeString: 'Triggered on $ref',
         token: "${projectName}",
         printContributedVariables: true,
         printPostContent: true,
         silentResponse: false,
         regexpFilterText: '$ref',
         regexpFilterExpression: 'refs/heads/' + BRANCH_NAME
        )
      }


    stages {

        stage('build') {
            when { branch 'dev' }
            steps {
                sh '/apache-maven-3.6.3/bin/mvn clean package -Dmaven.test.skip=true -U'
            }
            post {
                success {
                    sh "/usr/local/bin/workwechatctl -p ${env.JOB_NAME} -n 沈君杰 -c 项目编译成功进行下一阶段"
                }
                failure {
                    step([$class: 'Mailer',
                    notifyEveryUnstableBuild: true,
                    recipients: "shenjunjie@zhiweidata.com",
                    sendToIndividuals: true])
                }
            }
        }
        stage('build image') {
            when { branch 'dev' }
            steps {
                withCredentials([usernamePassword(credentialsId: 'dockerHub', passwordVariable: 'dockerHubPassword', usernameVariable: 'dockerHubUser')]) {
                    sh "docker login -u ${dockerHubUser} -p ${dockerHubPassword} harbor.docker.zhiweidata.top"
                    sh "docker build -t harbor.docker.zhiweidata.top/${projectType}/${env.JOB_NAME}:${env.BUILD_NUMBER} ."
                }

            }
            post {
                failure {
                    sh "/usr/local/bin/workwechatctl -p ${env.JOB_NAME} -n 沈君杰   -c 镜像构建失败请查看详细信息"
                }
            }
        }
        stage('push image') {
            when { branch 'dev' }
            steps {
                withCredentials([usernamePassword(credentialsId: 'dockerHub', passwordVariable: 'dockerHubPassword', usernameVariable: 'dockerHubUser')]) {
                    sh "docker login -u ${dockerHubUser} -p ${dockerHubPassword} harbor.docker.zhiweidata.top"
                    sh "docker push harbor.docker.zhiweidata.top/${projectType}/${env.JOB_NAME}:${env.BUILD_NUMBER}"
                }

            }
            post {
                failure {
                    sh "/usr/local/bin/workwechatctl -p ${env.JOB_NAME} -n 沈君杰 -c 镜像push成功进行下一阶段"
                }
            }
        }
       stage('deploy') {
            when { branch 'dev' }
            steps {

                sh "kubectl -n ${projectType}-test set image deployment/${projectName} ${projectName}=harbor.docker.zhiweidata.top/${projectType}/${env.JOB_NAME}:${env.BUILD_NUMBER} --record"
            }
            post {
                success {
                    sh "/usr/local/bin/workwechatctl -p ${env.JOB_NAME} -n 沈君杰 -c k8spod已部署更新成功"
                }
                failure {
                    sh "/usr/local/bin/workwechatctl -p ${env.JOB_NAME} -n 沈君杰 -c k8spod部署更新失败"
                }
            }
        }
    }
}

