springboot+gradle+jenkins+docker自动化部署

gradle配置docker

// 阿波罗地址
def apolloMeta=''
// 当前项目环境
def profile = ''
if (project.hasProperty("pro")) {
    apolloMeta='http://***:8021'
    profile = 'pro'
} else if (project.hasProperty("pre")) {
    apolloMeta='http://***:8021'
    profile = 'pre'
} else if (project.hasProperty("test")) {
    apolloMeta='http://***:8021'

    profile = 'test'
} else if (project.hasProperty("dev")) {
    apolloMeta='http://***:8021'
    profile = 'dev'
}  else {
    apolloMeta='http://***:8021'
}


docker {
    baseImage 'openjdk:8-jdk-alpine'
    maintainer '做者名'
}
task dockerBuilder(type: Docker) {
applicationName = jar.baseName
volume('/tmp')
addFile("${jar.baseName}-${jar.version}.jar", "app.jar")
setEnvironment('TZ', "Asia/Shanghai")
runCommand("ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime > /etc/timezone")
setEnvironment('JAVA_OPTS', "-Dfile.encoding=UTF8")
entryPoint(["java",
    // apollo 地址
    "-Dapollo.meta=${apolloMeta}", 
    // 指定环境
    "-Dspring.profiles.active=${profile}",
    "-Djava.security.egd=file:/dev/./urandom"])
// 为了中间插入命令更方便一点
defaultCommand (["-jar","app.jar"])

复制代码

jenkins 配置

配置全局工具

新建任务

pipeline脚本

#!groovy
	pipeline {
	    agent any
	      
	    tools {// 定义工具,全局工具配置名称
	        maven "maven3"
	        gradle "gradle49"
	        jdk "jdk1.8"
	    }
	 
	    parameters { //定义参数
	        gitParameter branchFilter: 'origin/(.*)', defaultValue: 'dev', name: 'branch'type'PT_BRANCH'
	    }
	 
	    environment {
	        //定义仓库地址
	        REPOSITORY = "git路径"
	        //项目名称
	        PROJECTNAME = "projectName"
	        //group
	        GROUP = "com.*.*"
	        //harbor 存储镜像标签
	        HARBORTAG = "docker私服地址/路径"
	        //版本
	        VERSION = "1.0.0"
	        //端口
	        PORT = 8001
	       //代码检测平台路径
	        sonarqubeScannerHome = "/home/sonarqube/sonar-scanner-2.8/"
	         
	    }
	 
	    stages {
	 
	        stage('获取代码') {
	            steps {
	                 echo "start fetch code from git:${REPOSITORY}"
	                //清空当前目录
	                deleteDir()
	                //拉去代码
	                git branch: "${params.branch}", url: "${REPOSITORY}"
	 
	            }
	        }
	 
	        stage('代码静态检查') {
	            steps {
	                //伪代码检查
	                echo "start code check"
	                //sh "${sonarqubeScannerHome}/bin/sonar-scanner"
	 
	            }
	        }
	         
	        stage('停用服-删除镜像') {
	            steps {
	                script {
	                    def dockerCon = sh returnStdout: true, script: "docker ps -q -a -f name=.*{docker服务名称}.*"
	                    dockerCon = dockerCon.trim()
	                    echo "${dockerCon}"
	                    if (dockerCon == '') {
	                        echo "没有启动服务"
	                    } else {
	                        echo "容器ID:${dockerCon}"
	                        echo "----停用容器----"
	                        sh "docker stop  ${dockerCon}"
	                        echo '----删除容器-----'
	                        sh "docker rm  ${dockerCon}"
	                    }
	                     //是否有镜像
	                    def dockerimages = sh returnStdout: true, script: "docker images  ${HARBORTAG}/${PROJECTNAME} -q"
	                    if (dockerimages == '') {
	                        echo "没有镜像"
	                    } else {
	                        echo "删除镜像"
	                        sh "docker rmi  ${dockerimages}"
	                    }
	 
	                }
	            }
	        }
	 
	        stage('编译+单元测试') {
	            steps {
	                echo "start compile"
	                //切换目录
	                dir('工程目录') {
	                    //从新打包
	                    sh "gradle clean build dockerBuilder -Ptest -Ptest -x test  --refresh-dependencies  --no-daemon"
	                }
	            }
	        }
	 
	        stage('构建镜像-发布镜像') {
	            steps {
	                echo "start build image"
	                dir('工程目录') {
	 
	                    //build镜像
	                    //sh 'gradle dockerBuilder'
	                    //镜像重命名
	                    sh "docker tag ${GROUP}/${PROJECTNAME}:${VERSION}  ${HARBORTAG}/${PROJECTNAME}:${VERSION}"
	                    //删除老名字的镜像
	                    sh "docker rmi ${GROUP}/${PROJECTNAME}:${VERSION}"
	                    //登陆Harbor
	                    //sh "docker login -u admin -p 111111 harbor地址"
	                    //推送镜像
	                    // sh 'docker push ${HARBORTAG}/${PROJECTNAME}:${VERSION}'
	                }
	            }
	        }
	 
	        stage('启动服务') {
	            steps {
	                echo "---启动服务----"
	                sh "docker run  -d --name ${PROJECTNAME}  -v /home/pinpoint:/usr/local/pinpoint:rw  -p ${PORT}:${PORT} -t ${HARBORTAG}/${PROJECTNAME}:${VERSION}  -javaagent:/usr/local/pinpoint/pinpoint-bootstrap-1.8.2.jar -Dpinpoint.agentId=*** Dpinpoint.applicationName=***  -jar app.jar"
	 
	            }
	 
	        }
	 
	    }
	    post {
	        failure {
	            script {
	             echo "$BUILD_ID  $BUILD_NUMBER"        
	             //失败了发送钉钉机器人信息
	             sh "/home/lxsh/dingding.sh 任务名称  $BUILD_ID"
	            }
	        }
	     }
	 
	}
	

复制代码
相关文章
相关标签/搜索