jenkins中的maven jdk 钩子配置

jenkins中的maven jdk 钩子配置

打包时候把每个子项目打成 jar 包,然后通过 Dockerfile 生产 docker 镜像,然后启动镜像生成容器

项目根目录下新增 Jenkinsfile

pipeline {
    agent any
    stages {
        stage('package') {
            agent {
                docker {
                            image 'maven'
                            args '-v /root/.m2:/root/.m2  -v /data/maven/apache-maven-3.6.0/conf/settings.xml:/root/.m2/settings.xml --entrypoint='
                }
            }
            steps {
                script{
                    echo "WORKSPACE:${env.WORKSPACE}"
                    echo "Branch:${env.NODE_NAME}"
                    if ("${env.NODE_NAME}" == "master") {
                        sh "sh package.sh"
                    }
                }
            }
        }
        stage('build') {
            agent none
            steps {
                script{
                    echo "WORKSPACE:${env.WORKSPACE}"
                    echo "Branch:${env.NODE_NAME}"
                    if ("${env.NODE_NAME}" == "master") {
                        sh "sh build.sh"
                    }
                }
            }
        }
    }
}

# maven 用于 Jenkins 构建有 maven 环境的容器

docker pull maven

# jdk8 的镜像用于 Dockerfile 中设置构建拥有 jdk8 环境镜像的基础镜像

docker pull jdk8

- image 'http://docker.io/maven':基于这个镜像生成容器部署,所以环境有 maven 环境
- args 中 -v /root/.m2:/root/.m2:把依赖挂载导服务器上,不用每次打包都下依赖
- args 中 -v /data/maven/apache-maven-3.8.0/conf/settings.xml:/root/.m2/settings.xml
- --entrypoint=:配置下好像就不会打开进入容器了,没深入研究
- ${env.WORKSPACE}:工作空间路径
- ${env.NODE_NAME}:进行的分支

package.sh

#!/bin/sh
#项目打包
mvn clean install package '-Dmaven.test.skip=true'

build.sh

#!/bin/sh

#启用 prod 配置
ActiveProfiles=prod

#基本信息需要配置
#内部端口
targetPort=8082
#旧镜像版本号
oldVendor=2.0.0
#镜像版本号
vendor=2.0.0
#项目名
projectName=meng

#进入target文件夹
#直接的构建是在容器里,这个是在 Jenkins 容器里,所以空间不一样
#容器的空间是原空间路径后面多了 @2
cd $WORKSPACE@2/$projectName/target

#创建Dockerfile文件
#-jar -Duser.timezone=GMT+08 保证生成出来的容器的时区与服务器一致
cat << EOF > Dockerfile
FROM kdvolder/jdk8
MAINTAINER $projectName
VOLUME /tmp
LABEL app="$projectName" version="$vendor" by="$projectName"
COPY $projectName.jar $projectName.jar
EXPOSE $targetPort
CMD -Xmx100m -Xms100m -jar -Duser.timezone=GMT+08 $projectName.jar --spring.profiles.active=$ActiveProfiles
ENTRYPOINT java
EOF

#删除镜像下所有容器
docker rm -f $(docker ps -a | grep "$projectName" | awk '{print $1}')

#删除旧镜像
docker rmi -f $projectName:$oldVendor

#创建镜像
docker build -t $projectName:$vendor .

#启动镜像生成容器
docker run --name $projectName -d -p $targetPort:$targetPort $projectName:$vendor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lisanmengmeng

蚊子腿也是肉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值