转载

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

作者:极简小站

链接: mousycoder.com/2015/10/14/jenkins-git-maven-shell-tomcat-ci/

Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变得可能。现在软件开发追求的是效率以及质量,Jenkins 使得自动化成为可能!

亮点

  • 采用 shell 自定义脚本, 控制集成部署环境更加方便灵活

  • 精简 war 包中的 lib 包, 常驻 tomcat 里,减少 war 包传输时间

  • Jenkins 用户权限管理

  • 构建失败发邮件通知相关人员解决

  • 自动按天备份 war 包, Jenkins 配置备份以及版本控制化

环境

Ubuntu 14.10 (GNU/Linux 3.16.0-33-generic x86_64)

准备工作

  • Git 版本控制服务器

  • Tomcat 发布服务器

  • Jenkins 服务器 (提前安装好 Maven,Git,Jdk)

实验时可以在同一台机器配置,但是生产不建议,一台机器电源断掉了,所有服务器都挂了。

步骤

安装 Jenkins

下载 Jenkins War 包,Jenkins 官网 。

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

启动 Jenkins ,将 War 包放入 Tomcat 容器里,启动 Tomcat。

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

提示:

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

安装 Jenkins 插件

  • EmailExtensionPlugin (邮件通知)

  • GIT plugin (可能已经默认安装了)

  • PublishOverSSH (远程 Shell)

安装方法:

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置 Jenkins

配置基本信息

每个选项后都有个问号解释当前含义, (此步新手可以略过,默认不填即可)

配置方法:首页 -> 系统管理 -> 系统设置

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置邮件

管理员邮件地址就是邮件的发件人地址 (必须和后面邮件配置发件人邮箱一致,否则发不成功邮件)

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置 Jdk

JAVA_HOME 为 Jdk 路径 其中 Jdk 也可以从这里下载安装解压

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置 Maven

配置 Maven Configuration

路径为 maven 的 setting.xml 路径 (Maven 安装略)

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置 Maven 项目

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置 Maven 安装目录

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置 Git

其中  PathtoGitexecutable 为你 git 执行的路径 一般默认是 / usr/bin/git , 如有差异,可以  whereis git

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置邮件

邮件模板配置

配置好邮件的模板 (可自定义 html 编写) User Name 为用户名 Password 为密码 SMTP 不同邮箱不同, 请自行 google(另外 gmail 邮件如无代理翻墙,请勿用,推荐 163 比较好配置)

2020年最新的常问企业面试题大全以及答案

未翻墙

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

翻墙后

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

模板效果图

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

Default Subject 代码:

模板 Default Content 分享:

配置邮件触发器

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置 Publish over SSH

远程执行 shell 脚本 采用公钥私钥连接 其中 Key 里贴的是私钥 远程被管理的主机里贴的是公钥, 这 2 台主机就是相互信任,这样 scp 等操作就 不需要输入用户名和密码

公钥私钥生成方法:

  1. 管理主机 linux 上  ssh-keygen-t rsa-C"mousycoder@foxmail.com 一路回车 会在 / root/.ssh 下生成 idrsa(私钥) idrsa.pub(公钥)。

2.copy 公钥的内容到远程需要通信 (被管理) 的主机  /root/.ssh/authorized_keys 如无此目录文件则手动创建。

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置完之后可以 Test Configuration

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

配置 Job

步骤: 首页 ->新建 ->构建一个 maven 项目 (输入 item 名称)-> 进入该项目 ->配置

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

JOB 基本信息

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

项目源码管理

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

选择需要构建的分支,我们项目采用 git 工作流 默认 master 和 develop 平时开发构建 develop 分支,正式上线构建 master 并且打标签 (前公司 git 提交标准化相当复杂,分支相当多, 这里大家可以根据实际情况来)。

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

构建触发器

这里我们选择 poll 轮询每隔 1 分钟去检测 git 仓库代码库版本, 如果有更改则立刻构建,这里大家可以根据自己团队实际情况去制定,当然还有另外一个插件 gitlab-hook 可以主动去通知 jenkins 构建, 不过插件所占内存比较大,需要增大 tomcat 虚拟机内存配置,不然会内存溢出。

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

构建命令

我们采用最简单的  clean install 当然这里可以根据各自需求

例如 部署后的产物上传到 nexus 等, 详情参考  Maven 命令

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

Add post-build step

构建成功后执行 shell 命令

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

该 shell 的目的是取出 war 包 lib 中其他所有 lib 包 只留下 common-0.1-SNAPSHOT.jar 大大减少 war 包大小 (完整 war 包 30M 传包到阿里云服务器需要 2 分多, 精简后 2M,10 秒多, 大大提高构建速度)。

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

分享我的 Shell

构建成功远程执行 shell 脚本

execcommand 是远程 sh 的路径

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

分享我的 publish.sh 文件

作用是备份每次上传的 war 包 重启 Tomcat。

分享我的 kill-tomcat-force.sh 文件

作用是强制关闭 tomcat 进程

分享我的 Tomcat 精简方法

  • 在 tomcat_home/lib 下新建自定义 jar 包文件,导入项目所需其他 jar 包 (以后有新增的话,单独再导一次)

  • 修改 tomcat_home/conf/catalina.properties 搜索  =shared.loader 加上路径

此时 Tomcat 运行前会加载 server 下的 lib 包, 如果是多个项目公用一个 tomcat 的时候,就需要这里放公共的 lib 包,避免 tomcat 加载多余的 jar 包, 消耗内存。

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

构建后邮件设置

邮件主题收件人配置

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

邮件触发器

局部配置会覆盖掉全局配置, 我们之前在全局配置里配置了构建失败邮件触发器, 这里是更加精细的配置,

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

Jenkins 用户权限管理

步骤:首页 -> 系统管理 -> Configure Global Security

基本配置:

只有注册的用户才能操作, 当然如果是大企业的话,可以采用项目矩阵授权策略, 详情可以 Google。

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

Jenkins 配置的备份和版本控制

很多情况下稍不注意改变了 Jenkins 的配置,把平台弄坏了,又想去恢复,这个时候就得把 Jenkins 的配置文件进行配置或者版本化,只需要把  /root/.jenkins/ 加入 git 版本库里即可, 该目录下包含 Jenkins 所有信息, 包括每次构建历史信息和历史 jar 包

进行全备份然后覆盖掉该文件夹的时候,重新构建 JOB 会出现文件夹已经存在等 exception, 只需要手动删掉这些目录即可,不会丢失数据。 ( 这是 Jenkins 的一个 bug, 参考 JENKINS-21330 )

「Jenkins+Git+Maven+Shell+Tomcat持续集成」实用教程

参考资料

  • Jenkins 权威指南

  • jdkleo

感谢您的耐心阅读,如果您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,你的鼓励是作者写作最大的动力,

原文  http://mp.weixin.qq.com/s?__biz=Mzg2MjEwMjI1Mg==&mid=2247493889&idx=3&sn=3306aab3dac92e739c1ef372ac3d0bb6
正文到此结束
Loading...