这是VIPTEST的第045期内容

摘要

从14年开始使用最初的1.x版本到目前应用的2.x版本,不得不说期间Jenkins在成长,新增了pipeline管道这一概念以及Blue Ocean蓝海视图等,都使得它成为现在主流的CI(Continues Intergration:可持续集成)/CD(Continues Deployment:可持续部署)中重要使用工具,同时,自身通过操作使用这款工具,也带来了Shell/Bat以及新增的Pileline Script等语言的编写能力的提高,以下内容是以现有的2.137.2版本的操作所得的实际体会,如有不准确的地方,可提出留言。

安装

Jenkins属于典型的Web应用,也就是我们通常看到.war文件,对于Java开发者来讲,这一文件格式再熟悉不过了,下载包,百度搜索进入官网及可下载,Web服务器,我们通常采用主流的Tomcat,其它的应该也可以,不过我没有尝试过,放到webapps/目录下即可,正常启动tomcat即可实现访问,不过多介绍。 Jenkins属于典型的Web应用,也就是我们通常看到.war文件,对于Java开发者来讲,这一文件格式再熟悉不过了,下载包,百度搜索进入官网及可下载,Web服务器,我们通常采用主流的Tomcat,其它的应该也可以,不过我没有尝试过,放到webapps/目录下即可,正常启动tomcat即可实现访问,不过多介绍。

原理模型

Jenkins本身在安装完成后,是作为一个master节点存在的,也就是启动Web服务器的那台机器,所有的构建过程都要先通过这个主节点,当然你也可以把实现过程都在主节点上实现,但是,随着你的实现要求越来越复杂,单机器就很难支撑所有的实现过程,这个时候就可以应用Jenkins支持的一种C/S架构模式,也就是master—->多个节点,这也是个人认为比较出彩的一个地方,一台客户端机器对应一个节点或多个(一般都使用一个)。

连接前,要预先创建好节点,需要注意的地方是,节点的两个常使用的地方,一个是构建空间,也就是节点对应想要连接master那台机器的一个目录(可自己选择),另一个是环境变量,如果想要使用节点的环境变量,这里需要手动添加,而且,一旦有更新,必须重连节点才会生效。

连接过程在Jenkins页面的系统管理中,连接方式通常有三种jenkins定时构建时间设置,看下介绍基本上就明了了,但要提一下把slave作为客户端机器的服务启动时,我使用的这个版本就有个Bug,Jenkins官网上有明确介绍,如果要使用这种方式的话,最好升级到较高或更新版本。

不得不说一下Pipeline(我印象中应该是17年中才出现的),在这之前,各个Job的关联中都要通过触发器的应用,也就是在配置Job界面会有个关联其他Job的选项,可实现构建完一个Job的时候自动构建下一个Job的目的,我记得还可以根据上一个Job的构建结果状态来选择,如构建成功继续构建下一个,构建失败不继续构建。但在Pipeline出现以后,就变得更为的简单,可在一个管道内实现跨节点操作的目的,这是我觉得第二个出彩的地方,省去了很多麻烦,当然现在也有传统的方式,只不过我个人觉得应用的不再那么广泛了。

一个Pipeline中由node、stage、step三大部分组成,都可以是多个,这样说就比较清晰了吧。最小单位为step,也就是你想实现的每一个操作都可以理解为一个单独的step,如常见的创建文件夹/删除文件夹等,而实现的方式又是支持多种的jenkins定时构建时间设置,你想通过shell语言/bat命令 都OK。

常用地方1.日程表:

  1. 这个是我们实现日常构建或无人值守的一个基本组成部分,由SCM语法组成,MINUTE HOUR DOM MONTH DOW 格式,也就是分时天月星期,拓展支持的用法还包括具体具体时刻,如0 0 1 2 0 表示 2100分;区间标识,如 0 0-10 1 2 0,表示210点到10点每小时在0分都构建一次;步伐标识, 0/10 0 1 2 0 表示210点每隔10分钟构建一次;智能标识,这一个也就是 * 的用法, * 0 1 2 0,表示210x分构建,也就是0-59分,随机某一分钟,官方的解释是说是节点不忙的时候选择构建,其实也就是看节点机器的性能,CPU/内存等使用情况而言,这种方法也是Jenkins推荐的一种用法(在编写的时候你就会发现)。

2.插件管理:

  1. 这里是一个应用比较广泛的地方,就像Eclipsemarketplace一样,集成了各种应用,Github/HTML Publisher/Maven Integration等都是CI中常用的插件,你可根据项目需要,选择安装/升级对应的插件,搜索也比较简单,但需要注意的地方就是插件的版本和Jenkins的版本要对应好,要不可能会有异常出现,一般安装完都需要重新启动Jenkins,有些插件的资源可能需要翻墙才能安装,你也可以手动指定一个代理服务器进行下载。

3.权限管理:

  1. Jenkins默认是没有开启管理用户的功能,也就是访问页面的人都可以操作Jenkins,像是上文提到过的安装插件、连接节点、构建等,这样就显得尤为不安全,而且看不到任何的操作日志,某人某一时刻做了某件事情,都不清楚。在系统管理中的Configure Global Security开启安全设置,里面分为Jenkins专用用户和匿名用户(也就是游客)两方面,可控制用户权限,基本上包含了Jenkins上所有的操作,常用的方式就是安全矩阵。这里我不得不提出一个优化建议,目前还没有办法实现单个Pipleline的分配用户权限,这在日常项目中也是经常会遇到的一种需要,希望在最新版本中能够加入这样的功能。

4.视图管理:

  1. 随着参与构建的项目越来越多,Pipeline也就越来越多,很可能造成单个显示器高度已经不能显示全部,这时,你可选择通过视图进行管理,根据规则创建不同的视图,将相应的job加入到其中去,而且每个视图都可以单独添加说明,也变得尤其方便起来。

5.蓝海视图:

  1. 这一点得说是Jenkins的“颜值”所在了,抛弃了传统的UI设计,个人觉得还加入有些Mac的设计元素,使得整个操作界面干净清爽,当然还是以Ocean这一颜色为主基调,不过得预先在插件管理中进行安装才能使用,成功后就可以在左侧功能栏中进行开启,也可切换为传统页面,需要提到的一点,就是在构建时,蓝海页面下下构建消耗时间是实时显示,传统页面下需手动刷新或开启定时刷新才可看到最新结果。

6.系统设置:

  1. 这一块是和安全设置分开的另外一个功能,有必要提一下,常见的一些编码设置、插件信息设置、管理员邮箱服务器等都是在这里体现的,在插件市场中安装插件成功后,这里就会显示对应的插件需要设置才能使用的一些信息,如Extended E-mail Notification中的配置,这也是我们日常经常会遇到的一种需求:邮件提醒,细说一下这个插件的配置过程吧,看网上经常会有人遇到配置不成功的情况。

  2.    (1).检查jenkins版本是不是支持这个插件,1.5xx不支持,最好升级到最新版本,切记这一点;

  3.    (2).在系统管理-系统设置-系统管理员邮件地址 这里写上邮件地址,这个是发件人;

  4.    (3).在系统管理-系统设置-Extended E-mail Notification-SMTP server 这里写上邮箱服务器地址,咱们公司是mail.gyyx.cn;

  5.    (4).在系统管理-系统设置-Extended E-mail Notification-高级 勾上Use SMTP Authentication,填写发件人邮箱和密码,注意这个邮箱 一定得和系统管理员邮件地址邮件地址相同,切记!;

  6.    (5).到这一步已经完成全部配置了,可以在job中进行应用了,以下步骤为测试邮箱服务器和发件人邮箱,可以不做;

  7.    (6).在系统管理-系统设置-邮件通知填写SMTP服务器、勾上使用SMTP认证、填写用户名和密码、勾上通过发送测试邮件测试配置;

  8.    (7).在系统管理-系统设置-邮件通知填写Test e-mail recipient,这个地址是收件人地址,随便一个可用邮箱就可以;

  9.    (8).点击Test Configuration,对于某些邮箱服务器你会发现提示com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.1 spam;

  10.    (9).这是因为该邮箱服务器针对标题含有"email"这个单词的邮件标记为垃圾邮件,所以无法通过邮箱服务器发送,针对 其他服务器并不都是这样的,所以即使这一步发送失败了,只要你在job配置邮箱时标题不要含有这个敏感单词 一样可以发送成功

后续

上述提及的可以满足Jenkins的基本使用,当然,这也是根据本人的实际工作内容所限定的范围,暂时想到这么多吧,如果日后想起其他,再更新吧,遇到相关方面的问题,可留言。

– end –

VIPTEST

公益之路,持续前行!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注