1.概述
Jenkins 是一个可扩展的持续集成引擎。
主要用于:
- 持续、自动地构建/测试软件项目。
- 监控一些定时执行的任务。
Jenkins拥有的特性包括:
- 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
- 易于配置-所有配置都是通过其提供的web界面实现。
- 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
- 生成JUnit/TestNG测试报告。
- 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
- 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
- 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具。
部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。
CI系统的基本结构:
该系统的各个组成部分是按如下顺序来发挥作用的:
- 开发者检入代码到源代码仓库。
- CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。
- CI系统会在对应的工作区内执行构建过程。
- (任务配置项如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。
- (任务配置项配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.net、 SourceForge之类的网站。
- CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
2.Jenkins安装
2.1 下载war包,宿主到web服务器tomcat。
http://ftp-chi.osuosl.org/pub/jenkins/war/1.590/jenkins.war 下载war包,放到tomcat的webapps下,启动tomcat,然后运行http://localhost:8080/jenkins。
Jenkins运行时,需要有个运行目录,此处可以通过添加一个全局路径JENKINS_HOME来修改Jenkins的运行目录,默认的是“当前用户下.jenkins”,设置Jenkins的运行路径(例如设置为D:\Jenkins)。
2.2 解锁服务
第一次,登录,需要进行一个解锁 ,页面也会有提示,
/root/.jenkins/secrets/initialAdminPassword,我们可以通过这个文件中查看密码,并输入。
此时如果jenkins卡主不动,修改将地址换成下面的http://mirror.xmission.com/jenkins/updates/update-center.json
2.3 进入 Getting Started 界面,点击 install suggested plugins
进入如下界面,确保插件下载成功
安装成功后会跳转如下界面
2.4 安装需要的插件
Maven Integration plugin
Deploy to container Plugin
publish over ssh 用于生成jar包后上传到linux插件
3.Jenkins配置
3.1 Jenkins系统管理
在Jenkins首页面,左侧菜单可以看到系统管理页面。
进入【系统管理\系统设置】,进入Jenkins的系统配置页面。如下如所示,这里如果设置过maven jar的存储路劲需要选择local the exector,否则使用默认的就行,其他配置不用改,使用默认的就行
设置shell,如果不设置windows下回报错
3.2 设置jdk及maven,git(以下是windows下的配置,linux同理)
如果本机没有已经安装好,可以选择自动安装。
3.3 邮件通知配置(可以暂时跳过)
可以统一设置发送邮件的邮件地址,以及邮件通知相关的内容。具体配置参照如下所示
https://zhuanlan.zhihu.com/p/22810691
3.4 权限设置
首先安装角色权限的插件:
然后进入【系统管理\Configure Global Security】可以进行权限设置,选择基于Role的权限配置。
在【系统管理\管理用户】中创建新的用户,一定要配置好邮箱。
在【系统管理\Manage and Assign Roles\Manage Roles】中创建新的角色,并分配权限:
在【系统管理\Manage and Assign Roles\ Assign Roles】中给角色分配用户:
这样就完成基于角色的权限分配了。
我们系统暂时定了三个角色:管理员,项目经理,普通开发人员
管理员:拥有所有的权限
项目经理:可以创建修改运行构建计划,查看构建结果和报表
开发人员:可以查看构建的结果和报表
3.5 报表配置
3.5.1 CheckStyle报表
在[job${Project}\配置\增加构建后的步骤]中配置CheckStyle的结果文件:
报表展示的样子,其中[Configure]可以配置报表的样子:
3.5.2 FindBugs报表
在[job${Project}\配置\增加构建后的步骤]中配置FindBugs的结果文件:
报表展示的样子,其中[Configure]可以配置报表的样子:
3.5.3 代码覆盖率报表
在[job${Project}\配置\增加构建后的步骤]中配置Emma的结果文件:
报表展示的样子:
报表展示的样子:
3.5.4 单元测试结果报表
在[job${Project}\配置\增加构建后的步骤]中配置JUnit的结果文件:
报表展示的样子,其中[Configure]可以配置报表的样子:
4.任务构建
以上部分为jenkins配置,接下来是jenkins 的任务配置
4.1 任务创建
4.1.1 打开jenkins首页,点击新建项目
4.1.2 输入Item名称,选择maven项目,点击ok
4.2 构建任务配置
4.2.1 general配置
4.2.2 源代码管理配置
点击add,配置git用户名和密码
4.2.3 构建触发器
触发远程构建(例如,使用脚本):
Build after other projects are bulit:指定的项目完成构建后,触发此项目的构建。
Build periodically :此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很有帮助。
Poll SCM :这是CI 系统中常见的选项。当您选择此选项,您可以指定一个定时作业表达式来定义Jenkins每隔多久检查一下您源代码仓库的变化。如果发现变化,就执行一次构建。例如,表达式中填写0,15,30,45 * * * *将使Jenkins每隔15分钟就检查一次您源码仓库的变化。
Maven类型的构建任务的构建触发器多了一个选项。
4.2.4 构建环境
选择第一个即可
4.2.5 Pre Steps 构建配置
Maven 项目选择 preSteps即可
可以增加多个构建步骤,此节以Maven为例。
Maven类型的构建任务多了一个Pre-build Steps和一个Post-build Steps的设置,且只有一个构建步骤。默认是maven构建的设置。
4.2.6 build
4.2.7 post Steps
4.2.8 构建后操作
构建后,还可以执行一些操作,比如发送邮件,创建标签,发布war/ear到容器(web服务器),发布到linux服务器等。
这里以发布到linux服务器为例。
第一步:
打开jenkins首页,点击系统管理–系统设置,下拉找到找到publish over ssh,进行以下设置(请确保前面的步骤中publish over ssh插件已经安装成功,如果没有发现,那就是还没有安装成功,请返回去安装)。
细心的童鞋可能在这里可能会发现服务器的IP与jenkins安装的IP是一样的,也就是说都是都在同一台机器上,都是192.168.0.101,这是因为刚好只有这台Linux机器比较方便使用,所以就只用这一台机器做实验了。实际上jenkins安装在Windows上或者Linux上,然后项目部署到另外一台Linux,这样都是可以的,也推荐这么干,只要这里的IP换成部署项目的机器IP就可以了
第二步:
进入上面的已经创建好的jenkinsWeb项目,点击配置,下拉找到Post Steps进行配置。
如果没找到这项,证明publish over ssh没有安装成功。
接着进行下图配置
参数说明:
Transfer
SetSource files:表示要上传的本地的jar包及路径,可到工作空间去看。
Remove prefix:表示要上传时要去除的文件夹,即只上传jar包。
remote driectory:即表示执行时的路径,相当于把jar包上传到这里了。
exec commad:要执行的命令脚本。
脚本内容:
将此脚本放于上面的Exec commad路径中。
大概说一下这个脚本的意思,大牛请忽略这段吧。先找到正在运行的jenkins这个项目的ID,然后kill掉这个进程,就可以停掉这个项目了。假如你用的不是springboot项目,则灵活应变,例如tomcat发布的项目可以到tomcat的bin目录下运行shutdown.sh就可以了。然后打开root目录,将jenkins上传好的jar包复制到相应的目录,然后执行bootstrap.sh脚本,我这里的bootstrap.sh脚本是用来启动springboot项目,下面也贴上代码,供大家参考。假如是tomcat,同理到tomcat目录bin目录下执行启动脚本即可。
这里请务必注意第一行,必须制定JAVA_HOME的位置,否则jenkins会报找不到jre的错误。
第三步:
至此,第二步已经配置完毕,点击保存。点击立即构建,点击consoleoutput,就可以看到成功上传jar包到远程Linux并且成功发布项目的信息了。
至此已完成所有jenkins配置。浏览器访问刚才发布的项目
项目代码修改后,只需将代码提交到git master分支,然后登陆jenkins点击立即构建,则可以轻松的进行项目部署。Jenkins亦可进行定时构建部署,当然也可设置当master代码有更新时自动拉取代码进行构建部署,这里就不继续说了。
4.2.9 邮件通知
参考配置:https://zhuanlan.zhihu.com/p/22810691
构建完毕后,还可以发送邮件通知。
Jenkins自带邮件通知
第一步:Jenkins自带的邮件通知比较简单
第二步:Emai-ext plugin
插件安装完后,在任务配置中,可以添加的构建后操作就多了一项。