Jenkins安装与配置

目录

一、持续集成

1.软件开发生命周期

2.软件开发瀑布模型

3.软件的敏捷开发

4.什么是持续集成

5.持续集成的组成要素

6.持续集成的好处

二、Jenkins介绍和配置

1.Jenkins介绍

2.Jenkins的特征

3.持续集成流程说明

4.Gitlab代码托管服务器安装

5.配置开发环境

6.安装分布式版本控制系统


一、持续集成

1.软件开发生命周期

软件开发生命周期又叫做SDLCSoftware Development Life Cycle),它是集合了计划、开发、测试和部署过程的集合。如下图所示 :

需求分析:这是生命周期的第一阶段,根据项目需求,团队执行一个可行性计划的分析。项目需求可能是公司内部 或者客户提出的。这阶段主要是对信息的收集,也有可能是对现有项目的改善和重新做一个新的项目。 还要分析项目的预算多长,可以从哪方面受益及布局,这也是项目创建的目标。

设计:第二阶段就是设计阶段,系统架构和满意状态(就是要做成什么样子,有什么功能),和创建一个项目  计划。计划可以使用图表,布局设计或者文者的方式呈现。

实现:第三阶段就是实现阶段,项目经理创建和分配工作给开者,开发者根据任务和在设计阶段定义的目标进  行开发代码。依据项目的大小和复杂程度,可以需要数月或更长时间才能完成。

测试:测试人员进行代码测试 ,包括功能测试、代码测试、压力测试等。

进化:最后进阶段就是对产品不断的进化改进和维护阶段,根据用户的使用情况,可能需要对某功能进行修  改,bug修复,功能增加等。

2.软件开发瀑布模型

瀑布模型是最著名和最常使用的软件开发模型。瀑布模型就是一系列的软件开发过程。它是由制造业繁衍出来的。一个高度化的结构流程在一个方向上流动,有点像生产线一样。在瀑布模型创建之初,没有其它开发的模型,有很多东西全靠开发人员去猜测,去开发。这样的模型仅适用于那些简单的软件开发,但是已经不适合现在的开发了。

下图对软件开发模型的一个阐述。

优势劣势

简单易用和理解

各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量

当前一阶段完成后,您只需要去关注后续阶段。

由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险

为项目提供了按阶段划分的检查节点

瀑布模型的突出缺点是不适应用户需求的变化

3.软件的敏捷开发

敏捷开发:敏捷开发(Agile Development) 的核心是迭代开发Iterative Development) 与 增量开发(Incremental Development)。

迭代开发:对于大型软件项目,传统的开发方式是采用一个大周期(比如一年)进行开发,整个过程就是一次"大  开发";迭代开发的方式则不一样,它将开发过程拆分成多个小周期,即一次"大开发"变成多次"小开    ",每次小开发都是同样的流程,所以看上去就好像重复在做同样的步骤。

举例来说,SpaceX 公司想造一个大推力火箭,将人类送到火星。但是,它不是一开始就造大火箭,而是先造一个最简陋的小火箭  Falcon  1。结果,第一次发射就爆炸了,直到第四次发射,才成功进入轨道。然后,开发了中型火箭 Falcon 9,九年中发射了70次。最后,才开发 Falcon 重型火箭。如果SpaceX 不采用迭代开发,它可能直到现在还无法上天。

增量开发:软件的每个版本,都会新增一个用户可以感知的完整功能。也就是说,按照新增功能来划分迭代。

举例来说,房产公司开发一个10栋楼的小区。如果采用增量开发的模式,该公司第一个迭代就是交付一  号楼,第二个迭代交付二号楼 每个迭代都是完成一栋完整的楼。而不是第一个迭代挖好10栋楼的地基,第二个迭代建好每栋楼的骨架,第三个迭代架设屋顶......

敏捷开发如何迭代:虽然敏捷开发将软件开发分成多个迭代,但是也要求,每次迭代都是一个完整的软件开发周期,必须按  照软件工程的方法论,进行正规的流程管理。

敏捷开发有什么好处:(1)就是早期交付,从而大大降低成本。 (2)降低风险。

4.什么是持续集成

持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干  之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。通过持续集成,  团队可以快速的从一个功能到另一个功能,简而言之,敏捷软件开发很大一部分都要归功于持续集成。

持续集成的流程

根据持续集成的设计,代码从提交到生产,整个过程有以下几步。

提交:流程的第一步,是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交(commit)。

测试(第一轮):代码仓库对commit操作配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。

构建:通过第一轮测试,代码就可以合并进主干,就算可以交付了。交付后,就先进行构建(build)再进入第二轮测试。所谓构建,指的是将源码转换为可以运行的实  际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等。

测试(第二轮):构建完成,就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时  构建步骤也要移到第一轮测试前面。

部署:过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。将这个版本的所有文件打包(tar filename.tar * )存档,发到生产服务器。

回滚:一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指  向上一个版本的目录。

5.持续集成的组成要素

一个自动构建过程, 从检出代码、 编译构建、 运行测试、 结果记录、 测试统计等都是自动完成的, 无需人工干预。

一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库,一般  使用SVNGit。

一个持续集成服务器, Jenkins 就是一个配置简单和使用方便的持续集成服务器。

6.持续集成的好处

1.降低风险,由于持续集成不断去构建,编译和测试,可以很早期发现问题,所以修复的代价就少;

2.对系统健康持续检查,减少发布风险带来的问题;

3.减少重复性工作;

4.持续部署,提供可部署单元包;

5.持续交付可供使用的版本;

6.增强团队信心;

二、Jenkins介绍和配置

1.Jenkins介绍

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。官网: Jenkins

2.Jenkins的特征

开源的Java语言开发持续集成工具,支持持续集成,持续部署。

易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理。

消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生JUnit/TestNG测试报Jenkins的特征

分布式构建:支持Jenkins能够让多台计算机一起构建/测试。

文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。

丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如gitsvnmaven,docker等。

3.持续集成流程说明

1.首先,开发人员每天进行代码提交,提交到Git仓库。

2.然后,Jenkins作为持续集成工具,使用Git工具到Git仓库拉取代码到集成服务器,再配合JDK、Maven等软件完成代码编译,代码测试与审查,测试,打包等工作,在这个过程中每一步出错,都重新  再执行一次整个流程。

3.最后,Jenkins把生成的jarwar包分发到测试服务器或者生产服务器,测试人员或用户就可以访问应用。

服务器列表

名称

IP地址

安装的软件

代码托管服务

192.168.195.128

Gitlab-12.4.2

持续集成服务

192.168.195.200

Jenkins-2.190.3JDK1.8Maven3.6.2GitSonarQube

应用测试服务

192.168.195.201

JDK1.8Tomcat8.5

4.Gitlab代码托管服务器安装

官网: Iterate faster, innovate together|GitLab

Gitlab简介:GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源(基于MIT协议),与Github类似,     可以注册用户,任意提交你的代码,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服务器 上,数据库等一切信息都掌握在自己手上,适合团队内部协作开发,你总不可能把团队内部的智慧总放  在别人的服务器上吧?简单来说可把GitLab看作个人版的GitHub

Gitlab安装

#安装相关依赖
[root@localhost ~]# hostnamectl set-hostname gitlab
[root@localhost ~]# su
[root@gitlab ~]# yum -y install policycoreutils openssh-server openssh-clients postfix
#启动ssh服务&设置为开机启动
[root@gitlab ~]# systemctl enable sshd && sudo systemctl start sshd
#设置postfix开机自启,并启动,postfix支持gitlab发信功能
[root@gitlab ~]# systemctl enable postfix && systemctl start postfix
#开放ssh以及http服务,然后重新加载防火墙列表
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
如果关闭防火墙就不需要做以上配置
#下载gitlab包,并且安装在线下载安装包:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6/gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
[root@gitlab ~]# rz -E
[root@gitlab ~]# rpm -ivh gitlab-ce-12.4.2-ce.0.el6.x86_64.rpm
#修改gitlab配置
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
...
external_url 'http://192.168.100.128:82'   #第23行修改
nginx['listen_port'] = 82                  #第1112行修改

[root@gitlab ~]# gitlab-ctl reconfigure    #重新配置
[root@gitlab ~]# gitlab-ctl restart        #重新启动gitlab
#关闭了防火墙就不需要做
[root@gitlab ~]# firewall-cmd --zone=public --add-port=82/tcp --permanent 
[root@gitlab ~]# firewall-cmd --reload

浏览器验证:http://192.168.100.128:82

设置账号名和密码进入界面

点击界面,创建用户

创建用户的时候,可以选择Regular或Admin类型

创建用户信息

修改密码后,用户就创建完毕

回到主界面创建组

使用管理员  root  创建组,一个组里面可以有多个项目分支,可以将开发添加到组里面进行设置权限, 不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的管理。

进入创建组界面,直接创建组

将用户添加到组中

找到创建的组

点击左边的Members,使用户和组捆绑在一起

5.配置开发环境

安装jdk

设置变量环境

安装开发环境

找到安装目录下的bin目录

修改配置路径

安装完毕

源码上传到Gitlab仓库

下面来到IDEA开发工具,我们已经准备好一个简单的Web应用准备到集成部署。我们要把源码上传到Gitlab的项目仓库中。在idea中Maven构建web项目,且进行环境设置。

创建项目

加载完成之后,需要调整框架结构

这个时候不能运行,还差一个tomcat软件包

本地安装tomcat,因为idea开发环境做好了源码,需要在本地测试

让IDEA能够识别tomcat,先获取一下tomcat文件夹的权限,

再回到开发环境配置能够识别tomcat服务的路径 

运行tomcat,还是会失败!!!

这是端口还有问题,我们只需再改一下端口

回到开发工具中运行index.isp文件

在本地tomcat服务器看到结果

6.安装分布式版本控制系统

直接找到安装包,一直点到最后

安装完成后,会默认打上勾

回到IDEA,找到VCS选项,添加Git

加载完Git后,VCS里面会出现Git选项

先Add到缓存区

添加完成后,就会出现这个界面

尝试提交一个项目,这次的提交项目是到本地仓库Git

推送到Gitlab项目仓库中

点击push完,会跳出弹窗

点击Define remote

回到Gitlab的界面,复制ip地址

确定后,设置用户和密码

设置完成后,会出现弹窗

Push完,先在本地测试

上传到远程仓库

 

Push完成后,出现弹窗

这时候远程仓库Gitlab就有了上传的信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值