Jenkins 打包微服务教程-一个配置文件即可打包所有模块

1.2K+次阅读
没有评论

共计 2136 个字符,预计需要花费 6 分钟才能阅读完成。

一、项目结构

该教程基于文章 Docker 搭建 jenkins 并配置 jdk、maven和node环境,这里默认已经配置好了环境,且微服务项目结构如下:

web-platform
  - system
    - gateway-service
    - admin-service
  - monitor
    - log-service

二、项目配置

1. General

这里填项目的相关描述、丢弃旧的构建、参数化构建

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

丢弃旧的构建让 jenkins 历史构建不会占用很大空间。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

参数化构建使这个配置作为通用的配置,可以打包该微服务下所有模块,这里正确填写很重要。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

将目标服务器也作为参数,这样可以单独更新一台服务器的程序,同时指定了项目所用 jdk 版本。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

2. 源码管理

这里需要配置 gitlab 的源码地址和指定分支(一般为main或者master),并且 Credentials 指定拉项目代码的账号密码,自行添加即可。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

3. 构建触发器

这里根据需要配置触发器,根据某些事件触发打包,比如 git push 动作。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

4. 构建环境

这里配置构建环境,没有必要配置,根据自己需要。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

5. 构建前步骤

maven -pl -am 的意思是在构建指定项目之前,先构建其所有依赖项,并且只构建指定的项目而不是整个多模块项目。选项"-am" 和"-pl" 可以单独使用,也可以组合使用。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

6. 项目构建

指定打包所需的 pom 文件,并指定打包命令。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

7. 构建后操作

打包镜像

打包后需要将 jar 包做成 docker 镜像。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

Dockerfile 内容:

FROM acaiee/alpine-java:cst
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} /app/${JAR_FILE}
# 设置环境变量
ENV TZ="Asia/Shanghai" \
    JAR_NAME=/app/${JAR_FILE} \
    JAVA_OPTS="\
    -Xms128m \
    -Xmx512m \
    -XX:MetaspaceSize=128m \
    -XX:MaxMetaspaceSize=512m"
ENTRYPOINT java ${JAVA_OPTS} -jar ${JAR_NAME}

以下是脚本内容:

## 构建镜像
cd ${module}
serviceName=${module#*/}
## 根据容器内的时间具体决定使用哪个时间
current=$(date +"%Y%m%d-%H%M")
imageName=${serviceName}:${current}
tarName=${serviceName}-${current}.tar
jarFile=$(ls target/ | grep \.jar$)
mv target/${jarFile} .
docker build --build-arg JAR_FILE=${jarFile} -t ${imageName} .

## 保存镜像-保存在 jenkins 主目录下的 images 文件夹
imagesDir=${JENKINS_HOME}/images/$JOB_NAME/${serviceName}
mkdir -p ${imagesDir}
docker save -o ${imagesDir}/${tarName} ${imageName}
cp ${imagesDir}/${tarName} target/${tarName}

## 清理镜像
docker rmi -f $(docker images | grep ${serviceName} |awk 'NR>0 {print $3}')
## tar包保留指定数量
cd ${imagesDir}
retainNumber=3
rm -f $(ls -t | awk "NR>${retainNumber}")

运行镜像

选择目标服务器,并将镜像发送到目标服务器,导入后运行镜像。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

以下是脚本内容,docker run 的参数根据需要调整。

#!/bin/bash
cd /tmp/robot-patrol-platform
tarName=$(ls -1t | head -n 1)
imageName=$(docker load -i ${tarName} |  cut -d' ' -f3)
containerName=$(echo ${imageName} | cut -d: -f1)
# 删除原来的容器,并新建一个容器
if docker ps | grep "${containerName}" >/dev/null 2>&1; then docker rm -f ${containerName} ; fi
docker run -d --net host --restart=unless-stopped --name ${containerName} ${imageName}
# 删除无用的镜像,只保留最新的镜像
serviceName=${containerName}
if docker images | grep "${serviceName}" >/dev/null 2>&1; then docker rmi -f $(docker images | grep ${serviceName} |awk 'NR>1 {print $3}'); fi
# 删除临时文件
rm -rf /tmp/robot-patrol-platform/${tarName}

可以给目标服务器配置标签,只有标签匹配前面参数化构建传递的参数才会发送到目标服务器。

Jenkins 打包微服务教程-一个配置文件即可打包所有模块

以上就是微服务打包的完成流程。

提醒:本文发布于352天前,文中所关联的信息可能已发生改变,请知悉!

AD:【腾讯云服务器大降价】2核4G 222元/3年 1核2G 38元/年
正文完
 
阿蛮君
版权声明:本站原创文章,由 阿蛮君 2023-03-09发表,共计2136字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
Copyright © 2022-2024 阿蛮君博客 湘ICP备2023001393号
本网站由 亿信互联 提供云计算服务 | 蓝易云CDN 提供安全防护和加速服务