Jenkins企业案例实战

1、Jenkins相关概念

要熟练掌握Jenkins持续集成的配置、使用和管理,需要了解相关的概念,例如代码开发、编译、打包、构建等名称概念,常见的代码相关概念包括:JDK、JAVA、MAKE、ANT、MAVEN、Eclipse、Jenkins等。

(1)Make编译工具

Make编译工具是Linux和Windows最原始的编译工具,在Linux下编译程序常用make,Windows下对应的工具为nmake。读取本地makefile文件,该文件决定了源文件之间的依赖关系,Make负责根据makefile文件去组织构建软件,负责指挥编译器如何编译,连接器如何连接,以及最后生成可用二进制的代码。

(2)Ant编译工具

Make工具在编译比较复杂的工程使用起来不方便,语法很难理解,延伸出Ant工具。Ant工具属于Apache基金会软件成员之一,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。

Ant构建文件是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义很多目标元素,这些目标之间可以有依赖关系。

构建一个新的项目时,首先应该编写Ant构建文件。因为构建文件定义了构建过程,并为团队开发中每个人所使用。

Ant构建文件默认名为build.xml,也可以取其他的名字。只不过在运行的时候需把这个命名当作参数传给Ant。构建文件可以放在任何的位置,一般做法是放在项目顶层目录也即根目录,这样可以保持项目的简洁和清晰。

(3)Maven编译工具

Maven工具是对ant工具的进一步改进,在make工具中,如果我们要编译某些源文件,首先要安装编译器等工具。有时候需要不同版本的编译器,在java的编译器需要不同的各种包的支持,如果把每个包都下载下来,在makefile中进行配置制定,当需要的包非常多时,很难管理。

Maven与Ant类似,也是个构建(build)工具,它是如何调用各种不同的编译器连接器呢?使用Maven plugin (maven 插件),Maven项目对象模型POM (Project Object Model),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。

POM是Maven项目中的文件,使用XML表示,名称为pom.xml。在Maven中,当构建Project的时候,不仅仅是一堆包含代码的文件。还包含pom.xml配置文件,该文件包括Project与开发者有关的、缺陷跟踪系统、组织与许可、项目的URL、项目依赖、以及其他配置。

在基于Maven构建编译时,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。

由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

(4)Jenkins框架工具

Maven可以实现对软件代码进行编译、打包、测试,功能已经很强大了,那还需要Jenkins做什么呢?Maven可以控制编译,控制连接,可以生成各种报告,可以进行代码测试。

但是默认不能控制完整的流程? 没有顺序定义,是先编译还是先连接?先进行代码测试,还是先生成报告?可以使用脚本来对Maven进行控制,实现这些流程的控制。

(5)Eclipse工具

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK),主要用于开发者开发网站代码。

2、Jenkins平台设置

Jenkins持续基础平台部署完毕,需要进行简单配置,例如配置JAVA路径、安装Maven、指定SVN、GIT仓库地址等,如下为JAVA路径和Maven设置步骤:

(1)Jenkins服务器安装Maven:

wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
tar -xzf  apache-maven-3.3.9-bin.tar.gz 
mv  apache-maven-3.3.9   /usr/maven/

(2)Jenkins系统环境变量设置

Jenkins系统配置
Jenkins系统配置

(3)配置好系统环境变量后需要创建job工程

Jenkins平台首页——创建一个新任务——填入Item名称——构建一个maven项目——单击OK

(4)创建JOB任务,需对其任务进行配置

(5)单击www.cnbugs.com工程名——配置——进入JOB工程详细配置——源码管理à选择Subversion配置SVN仓库地址,如果报错需要输入SVN用户名和密码

源码管理,SVN代码迁出参数详解如下:

Respository url                 配置SVN仓库地址; 
Local module directory         存储SVN源码的路径; 
Ignore externals option           忽略额外参数; 
Check-out Strategy              代码检出策略; 
Repository browser              仓库浏览器,默认Auto; 
add more locations            源码管理,允许下载多个地址的代码; 
Repository depth              获取SVN源码的目录深度,默认为infinity; 
empty: 不检出项目的任何文件,files: 所有文件,immediates:目录第一级,infinity:整个目录所有文件。

(6)配置Maven编译参数,BuildàGoals and options——输入“clean install -Dmaven.test.skip=true”,此处为maven自动编译、打包并跳过单元测试选项

Maven工具常用命令如下

mvn clean              打包清理(删除target目录内容);  
mvn compile            编译项目; 
mvn package           打包发布; 
mvn package -Dmaven.test.skip=ture 打包时跳过测试。

通过以上步骤的配置步骤,即完成了JOB工程的创建。

3、Jenkins构建JOB工程

Jenkins JOB工程创建完毕,如下直接运行构建,Jenkins将从SVN仓库获取SVN代码,然后通过Maven编译、打包,并最终生成可以使用的war包即可。操作步骤如下:

(1)单击www.cnbugs.com工程名,进入JOB工程详细配置界面,单击“立即构建”

(2)查看Build History,单击最新一次百分比滚动条任务

(3)进入JOB工程编译详细页面,单击“Console Output”

(4)查看Jenkins构建实时日志

控制台日志打印“Finished: SUCCESS”,则表示Jenkins持续集成构建完成,会在Jenkins服务器目录www.jfedu.net工程名目录下生产网站可用的war文件,将该war包部署至其他服务器即可,war路径为:/root/.jenkins/workspace/www.cnbugs.com/target/edu.war。

至此,Jenkins持续集成平台自动构建软件完成,该步骤只是生成了war包,并没有实现自动将该war包部署至其他服务器,如果要自动部署需要基于Jenkins插件或者基于Shell、Python等自动化部署脚本。

4、Jenkins自动化部署

如上通过手动构建Jenkins JOB工程,自动编译、打包生成war包,并不能实现自动部署,如需要实现自动部署可以基于自动部署插件或者Shell脚本、Python脚本等。

如下以Shell脚本实现Jenkins自动部署war至其他多台服务器,并自动启动Tomcat,实现最终WEB浏览器访问。Jenkins自动部署完整操作步骤如下:

单击www.cnbugs.com工程名——配置——构建后操作——Add post-build step——Archive the artifacts——用于存档的文件——输入:

**/target/*.war,该选项主要用于Jenkins编译后会将war包存档一份到target目录,该文件可以通过Jenkins Tomcat的HTTP端口访问

(2)Jenkins构建完毕,访问Jenkins war存档的文件,URL地址如下:

http://172.18.1.195:8080/job/www.cnbugs.com/lastSuccessfulBuild/artifact/target/edu.war

(3)选择Add post-build step——-Execute shell——Command输入如下代码,实现Jenkins edu.war包自动部署,如下为139.199.228.59客户端单台服务器部署edu.war,如果多台可以使用ip.txt列表,将IP加入至ip.txt,通过for循环实现批量部署

cp  /root/.jenkins/workspace/www.jfedu.net/target/edu.war  /root/.jenkins/jobs/www.jfedu.net/builds/lastSuccessfulBuild/archive/target/ 
ssh  root@ 139.199.228.59  'bash -x -s' < /data/sh/auto_deploy.sh #for  I  in  cat ip.txt;do ssh  root@${I}  'bash -x -s' < /data/sh/auto_deploy.sh ;done
此图像的alt属性为空;文件名为image-25-1024x242.png
此图像的alt属性为空;文件名为image-26-1024x203.png

(4)基于Jenkins将edu.war自动部署至172.18.1.195服务器Tomcat发布目录,需提前配置登录远程客户端免秘钥,免秘钥配置首先在Jenkins服务器执行ssh-keygen命令,然后按Enter键生成公钥和私钥;然后将公钥id_rsa.pub拷贝至客户端/root/.ssh/目录,并重命名为authorized_keys,操作命令如下:

ssh-keygen -t rsa -P'' -f/root/.ssh/id_rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub 172.18.1.195

(5)Shell脚本需放在Jenkins服务器/data/sh/,无需放在客户端,Shell脚本内容如下:

#!/bin/bash
#Auto deploy Tomcat for jenkins
#By author www.cnbugs.com 2020
export JAVA_HOME=/usr/java/
TOMCAT_PID=`/usr/sbin/lsof -n  -P  -t  -i  :8081`
TOMCAT_DIR="/usr/local/tomcat/"
FILES="edu.war"
DES_DIR="/usr/local/tomcat/webapps/ROOT/"
DES_URL="http://172.18.1.195/job/www.cnbugs.com/lastSuccessfulBuild/artifact/target/"
BAK_DIR="/export/backup/`date +%Y%m%d-%H%M`"
[ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID
cd $DES_DIR
rm -rf $FILES
mkdir -p $BAK_DIR;\cp -a $DES_DIR/* $BAK_DIR/
rm -rf $DES_DIR/*
wget $DES_URL/$FILES
/usr/java/jdk1.6.0_25/bin/jar  -xvf  $FILES
####################
cd $TOMCAT_DIR;rm -rf work
/bin/sh $TOMCAT_DIR/bin/start.sh
sleep 10
tail -n 50 $TOMCAT_DIR/logs/catalina.out

如上通过Shell+For循环可以实现网站简单的异步部署,如果需要将Jenkins edu.war包批量快速部署至100台、500台服务器,该如何去实现呢?后续小结会讲解到。

5、Jenkins插件安装

Jenkins最大的功能莫过于插件丰富,基于各种插件可以满足各项需求,Jenkins本身是一个框架,真正发挥作用的是各种插件。Jenkins默认自带很多插件,如果需添加新插件,可以在Jenkins平台主页面进行操作,操作步骤如下:

Jenkins平台首页——系统管理——管理插件——可选插件搜索email-ext-plugin插件选择并安装,如果没有该插件,则需单击“高级”,手动上传插件并安装,

访问Jenkins官网手动下载插件,将下载的插件传到服务器Jenkins根目录(/root、)下的plugins目录,即/root/.jenkins/plugins目录,重启jenkins即可。Jenkins插件下载地址:

https://wiki.jenkins-ci.org/display/JENKINS/Plugins

安装Email-ext-Plugin邮件插件的方法如下:

(1)下载Email-ext和Token-macro、Email-template,可以搜索某个插件,输入插件名称

(2)Email-ext和Token-macro、Email-template插件下载URL如下:

https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin  https://wiki.jenkins-ci.org/display/JENKINS/Token+Macro+Plugin  https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+Template+Plugin 

(3)安装Token-macro插件

(4)安装email-ext插件

(5)Email-ext、Token-macro和Email-template插件安装完毕

(6)Email插件安装完毕, Jenkins主界面——系统管理——系统设置——会出现选项Extended E-mail Notification,则表示Jenkins Email邮件插件安装完毕

如需安装GIT、Publish Over插件或者安装装Jenkins其他任意插件,方法与Email插件安装方法一致。

发表评论

登录... 后才能评论