
pipeline {
    agent any
    parameters {
        choice(name: 'BRANCH',choices:["dev"], description: '选择需要发布的节点')
        choice(name: 'DEPLOYMENT_TYPE',choices:["upgrade"], description: '发布类型')
    }

    stages {
        stage('Example') {
            steps {
                script {
                    node {
                        checkout scm
                        def rootDir = pwd()
                        def base_branch = "${params.BRANCH}"
                        def yaml2Map = load "./sharedLibs/yaml2Map.groovy"
                        def stages = load "./sharedLibs/stages.k8s.groovy"
                        def GLOBAL_CONFIG = yaml2Map.read('global.yaml').project

                        jdk = tool name: 'openJDK8'
                        env.JAVA_HOME = "${jdk}"
                        
                        dir("poyee-micro/DEV") {

                            def PROJECT_CONFIG = yaml2Map.read('cfg.yaml').project
                            def CONFIG = yaml2Map.merge(PROJECT_CONFIG, GLOBAL_CONFIG)
                            CONFIG.docker.image = String.format(CONFIG.docker.image, CONFIG.service.name)
                            println 'configs: ' + CONFIG

                            def generateDockerfile = {->
                                pathOfDockerfile='projdir'
                                module = CONFIG.service.module
                                module = module == null ? '' : (module[-1] == '/' ? module : module + '/')

                                JAR = CONFIG.service.jar
            sh """cat > ${pathOfDockerfile}/Dockerfile<<EOF
FROM registry.cn-shanghai.aliyuncs.com/poyee/openjdk:8-slim
ADD ${module}target/${JAR} /app/target/${JAR}
EOF
"""
                                return pathOfDockerfile
                            }

                            

                            String[] JAVA_ARGS = ["-Djava.security.egd=file:/dev/./urandom",
                                "-Xmx1024m",
                                "-Dspring.profiles.active=dev",
                                "-Dserver.port=80",
                                "-jar", "/app/target/${CONFIG.service.jar}"]

                            stages.execute(CONFIG, base_branch, [
                                'GENERATEDOCKERFILE': {generateDockerfile()},
                                'K3SDEPLOY' : {stages.deployWithConfigmapEnvOnly(CONFIG.service, CONFIG.k3s, base_branch, JAVA_ARGS, "./configmap-env.ini","ahxpm")}
                            ])

                            sh 'rm -rf projdir/skywalking-agent'
                        }
                    }
                }
            }
        }

        stage('Deploy') {
            steps {
                echo "Deployment approved by: ${env.APPROVED_BY}"
            }
        }
    }
}