build_image.groovy

import hudson.model.*; //(废弃) def call(String serverip,String imageName,String dockerFileSvnPath,String projectlist,String centerName) { def now_date=new Date().format('yyyyMMdd'); if (common.checkImageExists(serverip,imageName)) { //已存在镜像时,检查当前镜像是否有备份tag存在,如果有删除tag,重新执行备份;如果没有执行执行tag备份 if (common.checkImageExists(serverip,imageName + "_backup")) { log.info "已有备份TAG:${imageName}_backup存在,故执行删除操作" sh """ssh -p 29050 ${serverip} 'docker image rm ${imageName}_backup'""" sh """ssh -p 29050 ${serverip} 'docker tag ${imageName} ${imageName}_backup'""" } else { log.info "执行备份TAG:${imageName}:backup" sh """ssh -p 29050 ${serverip} 'docker tag ${imageName} ${imageName}_backup'""" } copyProjectToService(imageName,projectlist,centerName,serverip) //已存在镜像时,启动镜像并在当前镜像的基础上重新打包镜像 //sh """ssh -p 29050 ${serverip} 'docker run --name buildNewTag -d ${imageName}'""" //copyProjectToImage("buildNewTag",projectlist,centerName,serverip) //sh """ssh -p 29050 ${serverip} 'docker commit buildNewTag ${imageName}' // ssh -p 29050 ${serverip} 'docker rm -f buildNewTag'""" } else { //首次执行镜像打包,下载dockerFile文件执行镜像打包 checkout_svn(dockerFileSvnPath,"dockerFile") sh """ssh -p 29050 ${serverip} 'rm -rf /tmp/jenkins_docker_package/${now_date} && mkdir -p /tmp/jenkins_docker_package/${now_date}' scp -P 29050 -r ${env.WORKSPACE}/dockerFile/* ${serverip}:/tmp/jenkins_docker_package/${now_date} ssh -p 29050 ${serverip} 'cd /tmp/jenkins_docker_package/${now_date} && docker build -t ${imageName} .' ssh -p 29050 ${serverip} 'rm -rf /tmp/jenkins_docker_package/${now_date}' """ copyProjectToService(imageName,projectlist,centerName,serverip) //copyProjectToImage("buildNewTag",projectlist,centerName,serverip) //sh """ssh -p 29050 ${serverip} 'docker commit buildNewTag ${imageName}' // ssh -p 29050 ${serverip} 'docker rm -f buildNewTag'""" } } //根据传入服务中心名称和项目列表获取改服务中心的所有服务名称,并打包进镜像中(废弃) def copyProjectToService(String imageName,String projectlist,String centerName,String serverip) { //清理文件夹 sh """ssh -p 29050 ${serverip} 'rm -rf /tmp/jenkins_docker_package/projectlist/${centerName} && mkdir -p /tmp/jenkins_docker_package/projectlist/${centerName}'""" def allCenterProj = get_ini.getCenterProjectlist(projectlist,centerName) allCenterProj.each { sh """scp -P 29050 -r ${env.WORKSPACE}/compfile/${it}/ ${serverip}:/tmp/jenkins_docker_package/projectlist/${centerName}/""" } sh """ssh -p 29050 ${serverip} 'rm -rf /tmp/jenkins_docker_package/projectlist/Dockerfile' ssh -p 29050 ${serverip} 'echo "FROM ${imageName}\nMAINTAINER songrenkun "songrenkun@faxuan.net"\nCOPY ./${centerName} /usr/local/resin/webapps/\nSTOPSIGNAL SIGQUIT" > /tmp/jenkins_docker_package/projectlist/Dockerfile' ssh -p 29050 ${serverip} 'cd /tmp/jenkins_docker_package/projectlist/ && docker build -t ${imageName} .' """ }
posted @ 2021-07-17 15:36  Zz~  阅读(61)  评论(0)    收藏  举报