Jenkins

一、Jenkins简介

在写简介前还是习惯性写出官网网址:https://www.jenkins.io/ 

     Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降:持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、集成、测试、部署得以持续。 使用Maven(Ant)等来实现lava项目自动化构建发布部署。这些工具可以帮助在构建过程中实现自动化发布、回滚等动作。

1.1、简介

Jenkins是一个用Java编写的开源的持续集成工具。Jenkins能实时监控持续集成过程中所存在的问题,提供详细的日志文件和提醒功能,还能用图表的形式,形象地展示项目构建的趋势和稳定性。

1.2、特点

 易安装:仅仅一个jenkins.war,丛官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
 易配置:提供友好的GUI配置界面;
 变更支持:Jenkins能从代码仓库(SVN/Git)中获取并产生代码更新列表,并输出到编译输出信息中;
 支持永久链接:用户是通过Web来访问Jenkins的,而这些Web页面的链接地址都是永久链接地址,可以在各种文档中直接使用该链接;
 集成E-Mail/RSS/M:当完成一次集成时,可通过这些工具实时收取集成结果(构建-次集成需要花费一定时间,有了这个功能,就可以在等待结果过程中,干别的事情);
 JUnit/TestING测试报告:也就是用以图表等形式提供详细的测试报表功能;
 支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
 文件指纹信息:Jenkins会保存构建集成所产生的jars文件、集成构建使用了哪个版;
支持第三方插件:Jenkins支持第三方插件,这使得Jenkins功能变得越来越强大;

1.3、持续集成(CI)

含义:频繁的(一天多次的)将所有开发者的工作合并到主干上。持续集成的核心在于确保新增的代码能够与原先代码正确的集成。与后续要介绍的持续交付以及持续部署,其最主要的差别也就在于其目标不同。不过持续集成的流程还存在一定的异议:持续集成本身只不过是一种软件工程的方法或者策略,其并不规定具体的实现。在实际的应用中,还是需要结合具体的开发语言或者工具来定。
持续集成的优势
易于定位错误:每一次的代码集成都需要执行相关的测试工作,持续集成频繁的集成次数天然的将复杂的代码逻辑切割为了小块,也就使得每一次测试中遇到的错误能够更加容易的被定位;
易于控制开发流程:更为细致的工作提交也就意味着更容易判断当前的工作进度,这对于管理者规划开发流程而言提供了一个有效的参考,同时也为开发人员省下了汇报工作的时间;
易于减少不必要的工作:build 以及 test 过程的自动化可以为你节约一大票的时间,从而投入到有价值的工作中去

1.4、持续交付(CD)

持续交付 指的是:一种能够使得软件在较短的循环中可靠的发布的软件工程方法。
与持续集成相比,持续交付的侧重点在于 交付,其核心对象不在于代码,而在于可交付的产物。由于持续集成仅仅针对于新旧代码的集成过程执行了一定的测试,其变动到持续交付后还需要一些额外的流程。

1.5、持续部署(CD)

持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。

1.6、Maven介绍

Maven项目对象模型(POM)是可以通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。Maven除了以程序构建能力为特色之外,还提供高级项目管理工具。由于Maven的缺省构建规则有较高的可重用性,所以常常用两三行Maven构建脚本就可以构建简单的项目。由于Maven的面向项目的方法,许多Apache Jakarta项目发文时使用Maven,而且公司项目采用Maven的比例在持续增长。

1.7、传统网站部署流程

在运维过程中,网站部署是运维的工作之一。传统的网站部署的流程大致分为:需求分析->原型设计->开发代码->提交代码->内网部署->内网测试->确认上线->备份数据->外网更新->外网测试->发布完成。如果在内网测试时发现代码有异常,返回代码开发人员名字,调整代码;如果在外网测试时发现外网部署的代码有异常,可以及时进行网站回滚。

 

 手动上线步骤:
开发人员发起代码上线的需求(邮件中包含开发做好的WAR包)-)运维人员连接线上负载调度器(Nginx)-->隔离一组服务器(Tomcat)-->连接服务器(Tomcat)-->备份旧代码(tar打包)-->删除旧代码目录-->上传新的WAR包-->外网测试-->测试不通过则通过备份回滚代码-->测试通过则利用rsync的脚本推送代码到其他服务器-->统一外网测试->连接调度器恢复隔离机制-->隔离另一组服务器实施上线步骤-->上线完成。

1.8、目前主流网站部署流程

通过Hudson/Jenkins工具平台实现全自动部署+测试,是一个可扩展的持续集成引擎,属于开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins非常易于安装和配置,简单易用。
开发人员:写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVI、Git仓库即可。
运维人员:减轻人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新等操作。
测试人员:可以通过Jenkins进行简单的代码及网站测试

 

 

1.9、Jenkins的工作原理

是先将源代码从SVN/Git版本控制系统中拷贝一份到本地,然后根据设置的脚本进行build(构建)。整个系统的关键就是build脚本,build脚本告诉Jenkins在一次集成中需要执行的任务。

 2、Jenkins的下载与安装

在官网的Guided Tour中其实有介绍下载和安装的说明,进入如下位置点击Download Jenkins.就可以进入下载页面

 

 如果不想在上图页面进行下载的话也可以在首面点击Download进行下载安装

 

 

 

 

 我是通过首面的Download进行下载的,点击Download后进入如下页面

 

 

 

 

我是比较喜欢稳定版本的东西,所以我选择左边的进行下载安装,里面有各种版本的下载,这里我下载了两个版本,一个是war格式一个是windows格式

 

 war因为是java程序写的所以启动时要先有java的开发环境,按官网上来说启动war方式也比较简单,后面的--httpPort=8080可以写也可以不写,如果不写就是按默认端口8080

 

 

 

下面来启动下war版本看下

 

 

启动完成后打开网页,如果不想用命令启动也可以把这玩意放在tomcat中进行启动

 

 

 

 搞完了war方式后接下来搞一个比较简单的方式用.msi文件进行安装

 

 设置安装目录,我喜欢安装到自己定义的目录

 

 后面就傻瓜式安装就完了,搞定后用网页访问8080也能看到登录页面,而且任务管理器中会多一个Jenkins的服务

 docker的安装方式也有很多,这里采用一个最简单的方式

1.使用docker 安装jenkins

 

docker run -p 8080:8080 -p 50000:50000 -v jenkins_data:/var/jenkins_home jenkinsci/blueocean

2.访问jenkins地址 8080

 

 

注意:第一次启动的时候正在加载jenkins大概会等待3-10分钟。

3.界面和功能说明

当你们访问8080时会进入如下页面,下面是解锁Jenkins页面,下面的解释很清楚,就是登录需要密码,密码路径下面也说明了位置,那就按照路径去找下密码呗

 

 输入密码后登录页面如下,下面会显示一个异常的日志

 

 不用管它,再访问一次http://localhost:8080/页面会出现如下页面,下面出现的是一些插件,我选择的是推荐的一此插件

 

 

 点击进去后页面如下,它会自动安装一些我们必备的插件

 

 

 安装完成后进入以下页面,填完信息继续

 

 下一步如下,看个人情况要不要填

 

 搞完继续后进入登录后页面,如果后面要自动部署就可以新建一个Item,这里面东西挺简单的,自己点进去看下就懂了他是什么意思

 

 

 

4.工作流程

 

新建任务(job)

【第一个阶段:任务的准备阶段(配置各种环境)】job类似一个监督整个项目的工人,我们需要给这个工人起个名字(name),还有在哪里上班(workspace),指定工人监控哪个项目(svn项目仓库的url),准备好该工人的一系列配置之后

【第二个阶段: 任务开始工作(开始构建 部署)】工人就开始干活了,工人(任务)的大概工作流程job会轮询源码仓库,如果发生变化,就检出源码,然后按照指定的shell命令或windows命令进行构建

【第三个阶段:构建完成后的操作】会继续进行构建完成后的操作(部署上线)

 jenkins job命令执行的伪用户是jenkins

可用的环境变量 可以在shell中$JOB_NAME

 

 原始的代码集成部署发布是上面的这种流程,因此如果Jenkins能够实现上面的替代,那么就需要满足一些相关的功能;

 

 

1.在这个流程中,我们如果用的maven开发,这个时候需要maven的插件

2.如果我们使用的svn、git,则需要svn,git等插件等等

3.容器部署,需要tomcat等插件

 

5、创建任务及功能说明

 因为我是maven项目所以我在下面列表中选的就是构建一个maven项目,项目名称是reservoir

 

 

 填完后确定进入如下页面,下面有各种选项,其中有项是GITHUB项目,如果项目是托管在GIT上就可以填上GIT上的网址进行拉代码,后面详细说

 

 6、代码的拉取

 前面我创建了一个reservoir任务,正好我的git中有也这样一个项目,下面就将git中的代码拉取下来,将git地址填进去后发写报错,他提醒我要添加一个证书,那就在Credentials中添加个呗;

 

 

 

进去后页面如下,我在Kind选项中选的是SSH Username with private Key这个是指选择的是私钥,Usernmae是指私钥的名称,可以随便取,我的私钥因为以前生成过所以我就直接在我C盘中找到了

 

 找到后填到key中去,搞完后点击ADD

 

 点击完后会发现下图多了个选项,我们选择那个自己刚刚创建的选项就已经创建了私钥

 

 

但是发现还是有错,下面的错是说我要装一个git plugin插件,这个问题暂时放下,先聊点别的

 

 进入Global Tool Configuration全局配置页面,里面有JDK,git等一些参数的配置,这些东西是必配的,为啥呢,你没有JDK你代码运行不起来,没本地git配置你怎么拉取代码呢,我的idk是配置我了本地的,当然如果你想选自动安装也可以,选择对应版本就行,maven是全局的一般用默认的就行,接下来就是git的配置了

 

 在配置本地git路径前你本地git一定要下载安装了,然后还在你的github中配置了私钥,这是大前提,这些搞定后就可以配置本地GIT了

 

 

 

       输入如下内容进行打包

 

 

 

 

然后再装一个git plugin插件,就可以正常拉取代码了,上面搞完后点击下图所示位置

 

 

会进入一个新页面点击Build Now他会构建项目从GIT上拉取代码和用maven进行build操作

 

 

 

 执行完了后Bulid History下面有记录,可以点击下图红框内容看下详情

 

 

 

 

 输出内容如下

 

 然后回退到下图位置,点击工作区,下载内容就在这里面

 

 

 

 

 经过上面其实代码也拉下来了,自动打包工作也完成了,下面就是发布了,其实自动发布也自简单就是在如下截图上配置下就可以在打包完成时自动发布了

 

 发布搞定了,但这是在win版本上的发布流程,Linux版本可以百度下,也很简单;目前整个流程是结束了,但还不是真正上的全自动,为什么呢,因为拉代码的动作还是人工的,这一步怎么省去呢?按下面勾选下

 

 然后在git的webhooks上配置Jenkins的外网地址就可以了

 

posted @ 2021-02-07 21:53  童话述说我的结局  阅读(308)  评论(0编辑  收藏  举报