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} .'
"""
}

浙公网安备 33010602011771号