持续集成工具之Jenkins安装部署

  • A+
所属分类:linux技术
摘要

  一、DevOps理念  所谓DevOps是指development和Operations的组合,中文意思就是开发和运维的简写。devops理念主要是针对企业中的研发人员、运维人员和测试人员的工作理念,是他们在应用开发、代码部署和质量测试等整条生命周期中协作和沟通的最佳实践DevOps 强调整个组织的合作以及交付和基础设施变更的自动化、从而实现持续集成、持续部署和持续交付。传统的模式的开发人员只顾开发程序,运维只负责基础环境管理和代码部署及监控等,其并不是为了一个共同的目标而共同实现最终的目的,而DevOps 则实现团队作战,即无论是开发、运维还是测试,都为了最终的代码发布、持续部署和业务稳定而付出各自的努力,从而实现产品设计、开发、测试和部署的良性循环,实现产品的最终持续交付。

  一、DevOps理念

  所谓DevOps是指development和Operations的组合,中文意思就是开发和运维的简写。devops理念主要是针对企业中的研发人员、运维人员和测试人员的工作理念,是他们在应用开发、代码部署和质量测试等整条生命周期中协作和沟通的最佳实践DevOps 强调整个组织的合作以及交付和基础设施变更的自动化、从而实现持续集成、持续部署和持续交付。传统的模式的开发人员只顾开发程序,运维只负责基础环境管理和代码部署及监控等,其并不是为了一个共同的目标而共同实现最终的目的,而DevOps 则实现团队作战,即无论是开发、运维还是测试,都为了最终的代码发布、持续部署和业务稳定而付出各自的努力,从而实现产品设计、开发、测试和部署的良性循环,实现产品的最终持续交付。

持续集成工具之Jenkins安装部署

  以上这张图诠释了什么是DevOps,devops在研发、运维、测试当中是三者的交集;有了devops理念,研发开发流程高效,稳定快速,交付结果可预期;测试根据开发提交的代码,进行持续测试,提升了交付的质量;而运维也可以利用一些自动化部署工具,将测试过得代码,部署到线上;通过这样一个过程,降低了运维维护的成本;研发开发的代码,提交到仓库,由测试人员从仓库中拉去代码进行测试,如果这中间有bug,测试会把测试的结果拿给开发看,让开发改,经过多次修改,代码没有问题,然后再由运维人员将测试过的代码,部署到线上,通常在正式部署到线上时,一般都不会一下子将所有服务器都更新,一般采取分批部署,灰度发布;所谓灰度发布指在业务访问不高的情况下,将一部分服务器从生产环境摘下,进行代码更新,然后再上线;经过一段时间新上线的代码没有bug,然后再分批将其他服务器更新;如果上线后业务有异常,运维人员会将上线都代码立即回滚;这样做可以最大化减少线上业务故障;

  devops流程

持续集成工具之Jenkins安装部署

  上图是devops理念的一个流程,从项目最早的计划,到项目上线交付,后续的监控形成了一个闭环,这也体现了DevOps的核心理念团队协作、相互协助、持续发展;中间任何环节出现问题,都会将项目回退到上一步,它们之间都是环环相扣的;比如在t测试没有通过,那么测试会将测试的结果告诉开发,说代码测试有bug,然后研发修改,直到测试通过才会到运维手里,当然运维将项目部署到线上后,也要做监控,如果上线后监控到部分指标有问题,比如内存消耗严重,cpu负载过高,这些问题运维一方面要考虑服务器本身是否有问题,另一方面要考虑代码的问题;所以运维要和开发共同去协作,最终将问题解决;

  持续集成(Continuous integration)简称CI;所谓持续集成指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起并切相互不影响工作。

  持续部署(continuous deployment)简称CD;持续部署指是基于某种工具或平台实现代码自动化的构建、测试和部署到线上环境以实现交付高质量的产品,持续部署在某种程度上代表了一个开发团队的更新迭代速率。

  持续交付(Continuous Delivery)简称CD;持续交付是在持续部署的基础之上,将产品交付到线上环境,因此持续交付是产品价值的一种交付,是产品价值的一种盈利的实现。

  devops中常用的工具

持续集成工具之Jenkins安装部署

  jenkins在devops中主要做持续集成的工作,它可以将开发写的项目代码从代码仓库中拉去下来,进行代码扫描、编译、测试,部署到线上;

  jenkins是java语言编写的一款高度插件化的软件,它的很多功能都是由插件实现,扩展功能我们安装对应的插件即可,非常方便灵活;除此之外,jenkins还可以在多台机器上进行分布式地构建和负载测试。Jenkins是根据MIT许可协议发布的,因此可以自由地使用和分发。

  了解了上面的简介,我们再来说说jenkins的部署;

  二、环境准备

  硬件环境:内存建议4G+,Cpu:建议4核;当然根据自身环境的规模,确定硬件配置是比较妥当的做法;

  准备java环境

  1、安装java8

[root@node05 ~]# yum install ./jdk-8u191-linux-x64.rpm  Loaded plugins: fastestmirror Examining ./jdk-8u191-linux-x64.rpm: 2000:jdk1.8-1.8.0_191-fcs.x86_64 Marking ./jdk-8u191-linux-x64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package jdk1.8.x86_64 2000:1.8.0_191-fcs will be installed --> Finished Dependency Resolution  Dependencies Resolved  ============================================================================================================  Package           Arch              Version                          Repository                       Size ============================================================================================================ Installing:  jdk1.8            x86_64            2000:1.8.0_191-fcs               /jdk-8u191-linux-x64            288 M  Transaction Summary ============================================================================================================ Install  1 Package  Total size: 288 M Installed size: 288 M Is this ok [y/d/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction   Installing : 2000:jdk1.8-1.8.0_191-fcs.x86_64                                                         1/1  Unpacking JAR files...         tools.jar...         plugin.jar...         javaws.jar...         deploy.jar...         rt.jar...         jsse.jar...         charsets.jar...         localedata.jar...   Verifying  : 2000:jdk1.8-1.8.0_191-fcs.x86_64                                                         1/1   Installed:   jdk1.8.x86_64 2000:1.8.0_191-fcs                                                                            Complete! [root@node05 ~]# 

  提示:java8我们可以直接安装openjdk;也可以去oracle官网下载二进制包解压安装;我这里直接安装oracle的rpm包jdk;

  验证java环境

[root@node05 ~]# java -version java version "1.8.0_191" Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) [root@node05 ~]#  

  提示:如果安装了jdk以后,一定要确认能够使用java -version打印出java对应的版本,打印出版本说明我们安装的java环境才没有问题;以上是yum安装rpm包的方式部署java环境;

  配置二进制包java环境

[root@node06 ~]# cd /usr/local/src/ [root@node06 src]# rz rz waiting to receive.  zmodem trl+C ȡ    100%  185366 KB 37073 KB/s 00:00:05       0 Errors.gz...  [root@node06 src]# ll total 185368 -rw-r--r-- 1 root root 189815615 Aug 20  2019 jdk-8u162-linux-x64.tar.gz [root@node06 src]# tar xf jdk-8u162-linux-x64.tar.gz  [root@node06 src]# ll total 185368 drwxr-xr-x 8   10  143       255 Dec 20  2017 jdk1.8.0_162 -rw-r--r-- 1 root root 189815615 Aug 20  2019 jdk-8u162-linux-x64.tar.gz [root@node06 src]# ln -sv /usr/local/src/jdk1.8.0_162 /usr/local/jdk ‘/usr/local/jdk’ -> ‘/usr/local/src/jdk1.8.0_162’ [root@node06 src]#  

  以上把jdk安装到/usr/local/目录下,接下来到处java环境

[root@node06 src]# cat /etc/profile.d/java.sh  export JAVA_HOME=/usr/local/jdk export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jie/lib:$JAVA_HOME/lib/tools.jar [root@node06 src]# 

  验证:重启服务器,等服务器启动好了,看看在命令行能否使用java -version命令打印出对应java8的版本信息

[root@node06 ~]# java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode) [root@node06 ~]#  

  提示:如果重启后使用java -version能够看到对应java的版本,说明java环境就没有问题;

  准备好java环境,接着我们下载去官网下载jenkins;jenkins的官方网站是https://www.jenkins.io/;找到download页面,选择对应的系统

持续集成工具之Jenkins安装部署

  提示:官方告诉我们说,配置jenkins的仓库,然后使用yum install jenkins 命令来安装jenkins;并且官方建议使用openjdk;

  安装openjdk

[root@node04 ~]# yum install -y java-1.8.0-openjdk-devel 

  验证java环境

持续集成工具之Jenkins安装部署

  2、配置jenkins仓库

[root@node04 ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --2020-10-12 22:26:39--  https://pkg.jenkins.io/redhat-stable/jenkins.repo Resolving pkg.jenkins.io (pkg.jenkins.io)... 151.101.110.133, 2a04:4e42:1a::645 Connecting to pkg.jenkins.io (pkg.jenkins.io)|151.101.110.133|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 85 Saving to: ‘/etc/yum.repos.d/jenkins.repo’  100%[==================================================================>] 85          --.-K/s   in 0s        2020-10-12 22:26:57 (3.30 MB/s) - ‘/etc/yum.repos.d/jenkins.repo’ saved [85/85]  [root@node04 ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key   [root@node04 ~]#    

  三、安装jenkins

[root@node04 ~]# yum install -y jenkins Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile  * base: mirrors.aliyun.com  * extras: mirrors.aliyun.com  * updates: mirrors.aliyun.com Resolving Dependencies --> Running transaction check ---> Package jenkins.noarch 0:2.249.2-1.1 will be installed --> Finished Dependency Resolution  Dependencies Resolved  ============================================================================================================  Package                 Arch                   Version                       Repository               Size ============================================================================================================ Installing:  jenkins                 noarch                 2.249.2-1.1                   jenkins                  64 M  Transaction Summary ============================================================================================================ Install  1 Package  Total download size: 64 M Installed size: 64 M Downloading packages: jenkins-2.249.2-1.1.noarch.rpm                                                       |  64 MB  00:01:41      Running transaction check Running transaction test Transaction test succeeded Running transaction   Installing : jenkins-2.249.2-1.1.noarch                                                               1/1    Verifying  : jenkins-2.249.2-1.1.noarch                                                               1/1   Installed:   jenkins.noarch 0:2.249.2-1.1                                                                                Complete! [root@node04 ~]#  

  查看jenkins安装了那些文件

[root@node04 ~]# rpm -ql jenkins /etc/init.d/jenkins /etc/logrotate.d/jenkins /etc/sysconfig/jenkins /usr/lib/jenkins /usr/lib/jenkins/jenkins.war /usr/sbin/rcjenkins /var/cache/jenkins /var/lib/jenkins /var/log/jenkins [root@node04 ~]#  

  提示:/etc/sysconfig/jenkins是jenkins的配置文件;/usr/lib/jenkins/jenkins.war这个是jenkins的主程序war包;/var/lib/jenkins这个是jenkins的数据目录,通常这个目录我们应该挂载一个较大的存储,后续jenkins拉取代码就存放在此处;/var/log/jenkins这个是jenkins的日志存放目录;

  编辑jenkins的配置文件

持续集成工具之Jenkins安装部署

  提示:JENKINS_HOME用来指定jenkins的数据目录;默认是在/var/lib/jenkins目录;JENKINS_USER是用来指定jenkins的启动用户,默认是jenkins;如果不更改启动用户,使用默认用户,后续我们拖代码,编译,测试都是基于这个用户的权限去做,所以后续要注意其他服务器上对这个用户的权限;通常jenkins平台都不会对外,都是在内网中使用,所以更改成root也是可以的,如果你不想麻烦,建议修改成root;后续其他配置几乎不用更改,保存上面的配置,我们就可以启动jenkins了;

  启动jenkins,并把它设置为开机启动

持续集成工具之Jenkins安装部署

  提示:设置jenkins开机启动,需要用chkconfig命令去设置,原因是它没有提供unit file脚本文件;当然启动也是可以使用service命令去启动;

  用浏览器访问8080端口

持续集成工具之Jenkins安装部署

  提示:jenkins的启动稍微有点慢,我们这里耐心等待就好;如果内存小了,会等很久才起来;

持续集成工具之Jenkins安装部署

  提示:这里提示我们把上面输入管理员密码;这个管理员密码默认保存在/var/lib/jenkins/secrets/initialAdminPassword,我们把密码复制过来贴到此处就好;

持续集成工具之Jenkins安装部署

  提示:这里我们选择推荐安装就好,因为第一次运行,我们也不知道安装那些插件,后续如果用到其他插件,我们再安装即可;

持续集成工具之Jenkins安装部署

  提示:这里我们耐心等待插件全部安装好;这里安装插件和本地服务器网络有关,如果在这一步插件有些没有安装成功,可以重试,或者直接到jenkins主页里面的插件管理里面找到对应的插件,安装即可;

 持续集成工具之Jenkins安装部署

  提示:这里是创建一个管理员帐号,如果我们不想使用默认的admin帐号可以创建一个管理员帐号,当然我们也可以直接使用admin帐号;

持续集成工具之Jenkins安装部署

  提示:这里是填写访问jenkins的url地址;保持默认就好;

持续集成工具之Jenkins安装部署

  提示:到此jenkins就安装好了;我们可以点击开始使用jenkins,看看jenkins的首页;

持续集成工具之Jenkins安装部署

  提示:这里有些地方汉化的不是很好,重启jenkins再登录jenkins就好了;

  好了jenkins首页就长这样,到此jenkins的初始化配置就完成了;后续我们可以在里面用到什么功能再下载相应的插件,配置对应的功能就好;