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

    stages {
        stage('Example') {
            steps {
                script {
                    node {
                        // Git checkout before load source the file
                        checkout scm
                        // def base_branch = ref.tokenize('/')[2]
                        def base_branch = "${params.BRANCH}"
                        def rootDir = pwd()
                        def yaml2Map = load "./sharedLibs/yaml2Map.groovy"
                        def stages = load "./sharedLibs/stages.k8s.groovy"
                        def GLOBAL_CONFIG = yaml2Map.read('global.yaml').project
                        
                        jdk = tool name: 'openJDK17'
                        env.JAVA_HOME = "${jdk}"

                        dir("poyee-im/DEV") {

                            sh "ls /var/jenkins_home/workspace/IM-DEV/poyee-im/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 openjdk:17-alpine as final

ADD ${module}target/${JAR} /app/target/${JAR}
EOF
                    """
                                return pathOfDockerfile
                            }

                            // sh 'cp -r ../../skywalking-agent-9.0.0 projdir/skywalking-agent'
                            
                            String[] JAVA_ARGS = ["-Djava.security.egd=file:/dev/./urandom",
                                "-Xmx512m",
                                "-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'
                        }
                    }
                }
            }
        }
    }
}