node('orhon-jnlp') {

    k8sAppName = "smartcampus-backend-material"
    dataDir = "material"

    k8sNamespace = "smartcampus-dev"
    if(env.BRANCH_NAME == 'master'){
        k8sNamespace = "smartcampus"
    }
    ingressHost = "material.dev.edu.mongol.pub"
    if(env.BRANCH_NAME == 'master'){
        ingressHost = "material.edu.mongol.pub"
    }
    servicePort = "8031"
    if(env.BRANCH_NAME == 'master'){
        servicePort = "8031"
    }
    podPort = "8031"
    if(env.BRANCH_NAME == 'master'){
        podPort = "8031"
    }
    registryAppName = "backend-material"
    if(env.BRANCH_NAME == 'master'){
        registryAppName = "backend-material"
    }
    stage('Prepare') {
        echo "1.Prepare Stage"
        checkout scm
        echo "----BRANCH_NAME: ${env.BRANCH_NAME }"
        script {
            build_tag = sh(returnStdout: true, script: 'git rev-parse --short HEAD').trim()
            echo "${env.BRANCH_NAME}-${build_tag}"

            build_tag = "${env.BRANCH_NAME}-${build_tag}"
        }
    }
    stage('SET application config Stage') {
        echo "2.SET application config Stage"
        if (env.BRANCH_NAME == 'develop') {
            sh "sed -i 's/<APP-ACTIVE-CONFIG>/dev/' src/main/resources/application.yml"
        }
        else if(env.BRANCH_NAME == 'master'){
            sh "sed -i 's/<APP-ACTIVE-CONFIG>/k8s/' src/main/resources/application.yml"
        }
    }
    stage('3 Build Maven Package') {
        echo "3.1 Build Maven Package"

        if (env.BRANCH_NAME == 'develop') {
            echo "3.1 Build Maven Package develop Branch"
            sh "mvn clean package -Dmvn.test.skip=true"
        }
        else if( env.BRANCH_NAME == 'master' ) {
            echo "3.1 Build Maven Package master Branch"
            sh "mvn clean package -Dmvn.test.skip=true"
        }
    }
    stage('Docker Build and Push') {
        echo "4.Push Docker Image Stage"
        withCredentials([usernamePassword(credentialsId: 'orhonDockerHub', passwordVariable: 'dockerHubPassword', usernameVariable: 'dockerHubUser')]) {
             if (env.BRANCH_NAME == 'develop') {
                echo "develop branch Push Docker Image Build and Push Stage"
             }
             else if( env.BRANCH_NAME == 'master' ) {
                echo "develop master  Push Docker Image Build and Push Stage"
             }
            echo "Build Docker Image Stage"
            sh "docker build -t hub.orhoncloud.com/smartcampus/${registryAppName}:${build_tag} ."
            echo "docker login and push"
            sh "docker login -u ${dockerHubUser} -p ${dockerHubPassword} hub.orhoncloud.com"
            sh "docker push hub.orhoncloud.com/smartcampus/${registryAppName}:${build_tag}"
            sh "docker rmi hub.orhoncloud.com/smartcampus/${registryAppName}:${build_tag}"

        }
    }
    stage('Deploy') {
        echo "5. Deploy Stage"


        if (env.BRANCH_NAME == 'master') {
            input "确认要部署线上环境吗？"
            echo "开始部署线上环境"
        }
        else if( env.BRANCH_NAME == 'develop' ) {
            echo "开始部署开发环境"
        }
        sh "sed -i 's/<BUILD_TAG>/${build_tag}/' k8s.yaml"
        sh "sed -i 's/<BRANCH_NAME>/${env.BRANCH_NAME}/' k8s.yaml"
        sh "sed -i 's/<K8S-APP-NAME>/${k8sAppName}/' k8s.yaml"
        sh "sed -i 's/<DATA-DIR>/${dataDir}/' k8s.yaml"
        sh "sed -i 's/<K8S-NAMESPACE>/${k8sNamespace}/' k8s.yaml"
        sh "sed -i 's/<INGRESS-HOST>/${ingressHost}/' k8s.yaml"
        sh "sed -i 's/<SERVICE-PORT>/${servicePort}/' k8s.yaml"
        sh "sed -i 's/<POD-PORT>/${podPort}/' k8s.yaml"
        sh "sed -i 's/<REGISTRY-APP-NAME>/${registryAppName}/' k8s.yaml"
        sh "cat k8s.yaml"
        sh "kubectl apply -f k8s.yaml --record"
        sh "kubectl -n ${k8sNamespace} get pods"
        echo "Deploed end "
    }
}


