一、什么是持续集成?
(1)Continuous integration(CI)
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
(2)没有持续集成
项目做模块集成的时候,发现很多借口都不通==>浪费大量时间
需要手动去编译打包最新的代码==>构建过程不透明
发布代码,上线,基本靠手工==>脚本乱飞
(3)持续集成最佳实践:
维护一个单一的代码库
使构建自动化
执行测试是构建的一部分
集成日志及历史记录
使用统一的依赖包管理库
每天至少集成一次
(4)jenkins介绍
Jenkins只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有
Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Hudson后来被收购,成为商业版。后来创始人又写了一个jenkins,jenkins在功能上远远超过hudson
Jenkins官网:https://jenkins.io/
Jenkins下载:http://updates.jenkins-ci.org/
jenkins的全部镜像:http://mirrors.jenkins-ci.org/status.html
(5)部署代码上线流程:
1.代码获取(直接了拉取)
2.编译 (可选)
3.配置文件放进去
4.打包
5.scp到目标服务器
6.将目标服务器移除集群
7.解压并放置到Webroot
8.Scp 差异文件
9.重启 (可选)
10.测试
11.加入集群
二、安装使用
yum的repo中默认没有Jenkins,需要先将Jenkins存储库添加到yum repos,执行下面的命令:
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
然后执行下面的命令:
rpm –import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
然后 安装Jenkins
yum install -y jenkins 默认安装最新的
或者
直接下载到本地:wget https://pkg.jenkins.io/redhat/jenkins-2.160-1.1.noarch.rpm
然后通过命令安装成功:rpm -ih jenkins-2.160-1.1.noarch.rpm
jenkins安装成功后,默认的用户是jenkins,端口是8080,为了防止冲突,并且给用户赋权限,我们修改用户名和端口。
输入命令,进入jenkins配置文件: vi /etc/sysconfig/jenkins
修改用户名root,端口,然后保存,退出
1 | 安装jenkins有两种方式,tomcat方式部署和java部署启动。 |
启动jenkins
1 | service jenkins start |
登录成功后显示
选择”Install suggested plugins”安装默认的插件,下面Jenkins就会自己去下载相关的插件进行安装。安装完成后配置账号,配置好账号之后hu/123456,进入Jenkins。
接下来在jenkins中配置jdk、svn、maven、git,并且构建web项目和spring boot项目。
三、安装Maven
1 | 官网下载安装包apache-maven-3.6.0-bin.tar.gz到Linux上 |
四、安装git
安装过程 略
有的插件安装失败,通过换源来解决或者手动下载:jenkins->系统管理->管理插件->高级,如
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.jsonss
五、使用Jenkins
使用构建
配置DK、MAVEN、Git为实际对应的安装目录
安装以下插件:
1、 Maven Integration plugin
2、 Subversion Plugin
3、 Checkstyle Plugin
4、 Findbugs Plugin
5、 PMD Plugin
6、 Warnings Plugin
7、 Maven Info Plugin
8、 Maven Repository Scheduled Cleanup Plugin
9、 Unleash Maven Plugin
10、 Maven Invoker plugin
Subversion Plug-in ## 版本管理 SVN 的插件
Git plugin ## 版本管理 GIT 的插件
Maven Integration plugin ## 项目构建 Maven 的插件
Gradle Plugin ## 项目构建 Gradle 的插件
无需重启 Jenkins 插件即生效。如遇失败可重试或离线安装。
一般情况下,常使用到如下这些插件:
FindBugs Plug-in: 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对 比以发现可能的问题。
Checkstyle Plug-in:是一个静态分析工具,检查Java程序代码。
Deploy to container Plugin:用于构建项目后,自动发布war包重新部署的插件
SSH Plugin:这个插件使用 SSH 协议执行远程 shell 命令。
Multijob Plugin:这个插件是一个将多个项目连接在一起的插件。
1、构建Maven项目
1 | 由用户 hu 启动 |
原因分析:jenkins无法准确识别revision
操作方法:
再次构建,成功!
1 | 由用户 hu 启动 |
构建触发器
指定的项目完成构建后,触发此项目的构建。
Poll SCM
1.首先格式为:* * * * *(五个星);
2.第一个*表示分钟,取值0~59
第二个*表示小时,取值0~23
第三个*表示一个月的第几天,取值1~31
第四个*表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
3.使用举例:
每隔10分钟构建一次:H/5 * * * *
每隔1小时构建一次: H/1* *
每月30号构建一次: H 30 * *
Build periodically:此选项仅仅通知Jenkins按指定的频率对项目进行构建,而不管SCM是否有变化。如果想在这个Job中运行一些测试用例的话,它就很有帮助。
构建
这部分主要是配置构建的相关内容,用于定时触发构建或者手动执行构建的时候,对代码检验、编译时进行的操作。构建概念到处可查到,形象来说,构建就是要把代码从某个地方拷贝过来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个。
因为我的项目是用ant脚本实现的编译和打包,所以我选择的是Invoke Ant,Ant Version选择我Ant配置的那个名字(这里可以参见3.4.2),注意不要选择default喔,那个选择了没有用。
构建后操作
用于定义当前项目构建完之后的一些操作,比如构建完之后将checkstyle结果输出到指定日志文件,重新发布项目,去执行其他项目构建等。
构建后发布项目
注意,首先必须安装好Deploy Plugin插件,然后在tomcat的conf目录配置tomcat-users.xml文件,如我这里配置的是manager, 在
WAR/EAR files:是war包的相对路径(相对于工作区路径,即在工作区中war包的相对路径.)如我的maven执行完成之后会在工作区的target目录下生成项目.war,所以这里我的路径就写target\项目.war.
Context path:访问时需要输入的内容http://192.168.1.112:8000/maven-jenkins-test,如果为空,默认是war包的名字。
Container:选择你的web容器,如tomca 7.x
Manager user name:填入tomcat-users.xml配置的username内容
Manager password:填入tomcat-users.xml配置的password内容
Tomcat URL:http://192.168.1.112:8000
Deploy on failure:构建失败依然部署,一般不选择
注意:虽然这种部署方法可能会导致tomcat加载时出现卡死的现象。但是也是最简单的部署方式。如果卡死了重启下就好了,将tomcat的java内存参数调高可以解决这个问题。
上面写入错入,Tomcat端口是8080,开始部署:
1 | Running as SYSTEM |
成功部署到Tomcat,http://192.168.1.112:8080/maven-jenkins-test/成功访问。
好了!到此一个项目的获取源码,打包,远程部署