// can be called locally, without "def" myUtil = { -> println "hello myUtil" } sharedLibsPath = "${env.WORKSPACE}/sharedLibs" def applyService(SERVICE, K3S, String base_branch) { print "loading ${sharedLibsPath}/k3sUtil.groovy..." def k3sUtils = load "${sharedLibsPath}/k3sUtil.groovy" kvs = [:] kvs.put('', SERVICE.name) kvs.put('', SERVICE.version) kvs.put('', base_branch) k3sUtils.generateService(kvs) k3sUtils.applyService(K3S) } // 默认Java项目K8s部署(带configmap_配置目录) def deployWithConfigmaps(SERVICE, K3S, String base_branch, String[] args, configmapEnv="./configmap-env.ini", configmapConf="./configmap") { print "loading ${sharedLibsPath}/k3sUtil.groovy..." def k3sUtils = load "${sharedLibsPath}/k3sUtil.groovy" def configmap_env_name = k3sUtils.applyConfigMapEnv(SERVICE, K3S, configmapEnv) def configmap_conf_name = k3sUtils.applyConfigMapConfig(SERVICE, K3S, configmapConf) def java_args = '[' args.each{item -> java_args += "\"$item\","} java_args = java_args[0..-2] + ']' kvs = [:] kvs.put('', SERVICE.name) kvs.put('', SERVICE.version) kvs.put('', base_branch) kvs.put('', COMMIT_SHA) kvs.put('', K3S.pull_secretId) kvs.put('', imageUri) kvs.put('', java_args) if (SERVICE.health != null) kvs.put('', SERVICE.health) kvs.put('', configmap_env_name) kvs.put('', configmap_conf_name) k3sUtils.generateDeployment(kvs, 'deployment.yaml') k3sUtils.applyDeployment(K3S) } // 默认Java项目K8s部署(仅配置configmap_Environment) def deployWithConfigmapEnvOnly(SERVICE, K3S, String base_branch, String[] args, configmapEnv="./configmap-env.ini"){ print "loading ${sharedLibsPath}/k3sUtil.groovy..." def k3sUtils = load "${sharedLibsPath}/k3sUtil.groovy" def configmap_env_name = k3sUtils.applyConfigMapEnv(SERVICE, K3S, configmapEnv) print "configmap配置信息: ${configmap_env_name}" def java_args = '[' args.each{item -> java_args += "\"$item\","} java_args = java_args[0..-2] + ']' kvs = [:] kvs.put('', SERVICE.name) kvs.put('', SERVICE.version) kvs.put('', base_branch) kvs.put('', COMMIT_SHA) kvs.put('', K3S.pull_secretId) kvs.put('', imageUri) kvs.put('', java_args) if (SERVICE.health != null) kvs.put('', SERVICE.health) kvs.put('', configmap_env_name) k3sUtils.generateDeployment(kvs, 'deployment.yaml') k3sUtils.applyDeployment(K3S) } // Jenkins pipeline stages def execute(CONFIG, base_branch, closures=[:]) { stage('source code check out') { println "loading ${sharedLibsPath}/gitUtil.groovy..." def gitUtils = load "${sharedLibsPath}/gitUtil.groovy" COMMIT_SHA = closures.git != null ? closures.GITCLONE() : gitUtils.clone(CONFIG.git, base_branch) } stage("docker image build") { println "loading ${sharedLibsPath}/imageBuilder.groovy..." def imageBuilder = load "${sharedLibsPath}/imageBuilder.groovy" if (closures.BUILDIMAGE != null) { imageUri = closures.BUILDIMAGE() return } imageBuilder.buildJar() imageUri = imageBuilder.buildDockerImage(CONFIG.service, CONFIG.docker, base_branch) imageBuilder.cleanJar() } stage("apply K8S ConfigMaps && Deployment") { if (closures.K3SDEPLOY != null) { closures.K3SDEPLOY() return } deployWithConfigmapEnvOnly(CONFIG.service, CONFIG.k3s, base_branch, 'dev') } } return this