Jenkins 自动化部署流水线优化经验

  • 1.1 跳过测试类
  • 1.2 使用较为稳定的jenkins 企业长期支持版本
  • 1.3 限制Jenkins 使用内存大小



这篇博文主要总结下在生产环境使用Jenkins 实现自动化构建部署的优化经验。

我们知道在传统的单体架构中,一个服务器可能只部署一两个企业应用,对于内存的管理不需要刻意优化,但是到了微服务时代,一台服务器上可能会同时部署多个微服务,每个微服务又可能分为dev,test,uat,prod 环境,这时候如果配置不当,服务器内存会时不时报内存不足。

1.1 跳过测试类

在Jenkinsfile 文件中配置maven的构建打包的时候最好配置跳过测试类。

示例如下:

sh 'mvn clean package -Dmaven.test.skip=true'

注意事项:
如果不跳过测试类的话,当部署的微服务很多的时候,jenkins 部署过程中会吃掉大量内存。

1.2 使用较为稳定的jenkins 企业长期支持版本

下载的时候建议使用较为稳定的jenkins 企业长期支持版本

Jenkins占用3g内存 jenkins清除缓存_jenkins


其中企业长期支持版本中,Jenkins 2.2631 版本是有坑的版本,有时候保存的值没法保存成功。

Jenkins占用3g内存 jenkins清除缓存_jenkins_02


目前公司用的Jenkins 2.263.4 版本还是比较稳定的,UI等感觉优化清爽了很多。

Jenkins占用3g内存 jenkins清除缓存_Jenkins占用3g内存_03


1.3 限制Jenkins 使用内存大小

Jenkins 如果不限制使用内存大小可能会造成已经部署好的一些微服务被Linux 内核因为内存不足导致错杀掉。

配置示例如下:

Jenkins占用3g内存 jenkins清除缓存_jenkins部署过程内存过大_04


配置值示例如下:

JAVA_OPTS
-server -Xms2048m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m

这里根据自己的服务器剩余内存来做限制。

由于Jenkins直接部署jar 容易存在资源消耗过大影响其他应用问题,所以如今很多公司都采用Jenkins容器化部署镜像方式,可以通过配置严格限制每个镜像使用的内存,CPU等资源。