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脚本
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"
}
}
}
}
复制代码