设为首页 收藏本站
查看: 1191|回复: 0

[经验分享] jenkins集群测试环境原理

[复制链接]

尚未签到

发表于 2018-9-4 06:08:19 | 显示全部楼层 |阅读模式
  
  Jenkins自动化构建成过程,可帮助我们节省大量时间,完成这个过程的自动化后,在以后的开发过程中,我们需要做的,就是只是提交代码到版本库中,构建自动完成,基本不再需要人工干预。
  代码仓库作为构建的素材库,构建所需的代码从代码库中获得。
  最好有一台服务器单独作为持续集成服务器,一方面保证了环境的纯净,一方面不影响开发,而且持续集成服务器一般是随时准备开始构建的,所以一般也不关机。
  [首先要有统一的代码库,服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。如果发现有代码更新,那么就从版本控制服务器下载最新的代码。等代码完全更新以后,调用自动化编译脚本,进行代码编译。然后运行所有的自动化测试,并且进行代码分析。如果其中任何一个步骤失败,就表示build失败,持续集成服务器会给予响应的反馈。每次代码提交之后,都会在持续集成服务器上触发一个定时构建,然后进行编译、部署。]
  
  [原则]
  1.开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;
  2.需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;
  3.必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。
  4.不更新构建失败的代码
  开发人员及时的提交代码进行构建是符合上述实践的,及时拉取代码可以防止工作中的分支偏离主干分支太多。定时触发构建或者通过检测代码的修改情况在触发构建都是可以的,主要是根及时的构建新的代码。如果构建失败,则必要及时处理导致失败的问题,修复后重新构建。当然构建失败的代码就不要拉到本地了,会污染一个本来是可以运行的工作区。
  [持续集成工具]
  讲了这么多概念,有没一种工具把这种实践实现呢?当然有,常见的持续集成工具如下:
  jenkins
  travis
  gitlab
  buddybuild
  仅列举了一些典型的,Jenkins是传统型的工具,前身是 Hudson,04
年到现在已经有十多年的历史,后几个是最近几年出现的新一批,多少都和容器技术有点关系,这里我们主要介绍
Jenkins,因为这个工具比较常用,各种开发实践都可以通过大量的插件来组合实现,可定制性好很多。
jenkins
1jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。— 维基百科  Jenkins 有哪些功能呢?
  1.定时拉取代码并编译
  2.静态代码分析
  3.定时打包发布测试版
  4.自定义额外的操作,如跑单元测试等
  5.出错提醒
  基本上都是持续集成实践中的要求和周边的一些实现措施,如提醒功能等,出错后及时提醒开发者修复,Jenkins中通过配置 SMTP
配置信息(这个一般的邮件服务提供商都有提供),邮件模板等,创建事件触发器,在事件(如编译失败)发生时,及时发送邮件通知开发者,挺方便的。
  Jenkins 有很多种触发构建的方式,如 webhook,定时更新代码等,同时可以在触发构建后执行自定义的构建操作,通过编辑自定义的构建脚本,几乎可以进行任何构建操作。
  图片理解
  1)齿轮:如果将java/maven/ant/git/tomcat/jenkins等软件比喻为齿轮,如下图
DSC0000.jpg

  2)两个软件在一起可以驱动另外一个软件,如下图
DSC0001.jpg

  3)如果把这些软件要集成在一起工作,那么这个软件就可以存在其他软件的中间来驱动各个软件工作,如下图:
DSC0002.jpg

  4)jenkins就是类似中间那个齿轮,来驱动其他软件的集成一起工作,如下图
DSC0003.jpg

  某个博客的理解
  [是什么]
  jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使得持续集成编程可能。它的前身是hudson,是基于java开发的一种持续集成工具,它可以根据配置进行持续定期编译,运行相应的代码,将运行结果发送至邮件或者展示成报告等。
  [为什么]
  jenkins作为持续集成的标志性工具,自然是有了持续集成的众多优点。jenkins可以做一些自动化的build,只要我们把jenkins搭建成功,可以设置几分钟build一次,在定时自动build,验证单元测试,如果发生错误则把错误报告以email形式发送给项目模块负责人。
  [宏观理解]
  先来张图,大致理解下宏观:
DSC0004.jpg

  详细介绍:
DSC0005.jpg

DSC0006.jpg

DSC0007.jpg

DSC0008.jpg

  至于关于邮件的配置,也是为了方便我们的开发和管理,jenkins很强大。
  讲到这里,还是“啊呀呀,完蛋,还是有点不懂“的话,不如直接甩图(从网上copy下来的)

  这里是选择Gitlab作为git server。Gitlab的功能和Github差不多,但是是开源的,可以用来搭建私有git server,也提供非常强大的web GUI,比如开发者互相review源代码的时候就会很方便。
  系统的工作流程大概分为以下几步:
  1> 开发者将新版本push到git server (Gitlab)。
  2> Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测)
  3>jenkins
master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给jenkins来做。
  4> 我们在build中要进行编译,这里使用了分布式编译器distcc来加快编译速度。
  notes
  jenkins的工作原理是:先将源代码从gitlab中拷贝一份到本地,然后根据设置的脚本进行build。我们可以看出,整个系统的关键就是那个build脚本,用来告诉jenkins在一次集成中需要执行的任务。
  不过我之后是用的Github作为git server。但其实差不多,先讲到这里,重点难点还是在之后jenkins的安装配置使用上。
  Jenkins官网最新稳定版:
  https://pkg.jenkins.io/redhat-stable/
  1.下载依赖
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo  2.导入秘钥
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key  3.安装
yum install jenkins #等待安装时间较长,约25min

  jenkins安装完毕
  4.启动前检查是否已安装jdk
java   #显示java参数即证明已安装jdk  5.查找jenkins安装路径
rpm -ql jenkins

  jenkins安装路径
  jenkins相关目录释义:
  (1)/usr/lib/jenkins/:jenkins安装目录,war包会放在这里。
  ( 2 ) /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。
  (3)/var/lib/jenkins/:默认的JENKINS_HOME。
  (4)/var/log/jenkins/jenkins.log:jenkins日志文件。
  6.配置jenkins
  (1)查找jenkins端口
vim /etc/sysconfig/jenkins:set ignorecase/jenkins_port 回车

  查找到jenkins端口为8080
  (2)查看其他端口占用情况
netstat -ntlp

  显示已被占用端口
  被占用端口与jenkins端口8080无冲突,即可进入下一步启动jenkins
  (3)启动jenkins
java -jar /usr/lib/jenkins/jenkins.war --httpPort=8080  (4)修改jenkins端口
  若默认8080端口未被占用,可不修改
  若端口已被占用,则修改端口为其他端口,并将对应端口开放
#端口改为8899java -jar /usr/lib/jenkins/jenkins.war --ajp13Port=-1 --httpPort=8899#启动java -jar /usr/lib/jenkins/jenkins.war --httpPort=8899

  启动完成
  (5)验证jenkins能否打开
  在宿主机浏览器输入http://IP:Port
  我这里输入:http://192.168.114.128:8080
  (修改端口后输入:http://192.168.114.128:8899)

  进入jenkins解密界面
cat /var/lib/jenkins/secrets/initialAdminPassword

  获取密码
  =>获取密码=>输入密码=>继续
  =>安装插件=>retry几次可安装成功
  =>注册账号 (记录好账号密码)
  =>开始使用Jenkins

  getting started

  



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-562128-1-1.html 上篇帖子: JenKins-13167425 下篇帖子: docker+jenkins+git持续部署实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表