一、DevOps理念

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

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

  devops流程

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

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

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

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

  devops中常用的工具

  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的仓库,然后使用yum install jenkins 命令来安装jenkins;并且官方建议使用openjdk;

  安装openjdk

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

  验证java环境

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

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

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

  用浏览器访问8080端口

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

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

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

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

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

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

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

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

持续集成工具之Jenkins安装部署的更多相关文章

  1. 【持续集成工具】 Jenkins

    一.什么是持续集成 持续集成(CI):简单来说就是指将开发者的工作内容频繁地集成到主干中. 而持续集成工具可以将开发者频繁需要构建,编译,测试,部署等操作自动进行,为开发提供了非常大便利. 二.持续集 ...

  2. 持续集成工具之jenkins+sonarqube做代码扫描

    上一篇我们主要聊了下代码质量管理平台sonarqube的安装部署以及它的工作方式做了简单的描述和代码扫描演示:回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13 ...

  3. 持续集成工具之Jenkins

    Jenkins是一个很好的持续集成工具,不光可以帮助开发进行自动打包,自动验证升级和安装,也可以帮助测试人员定时执行测试任务,或者在开自动打包安装之后自动执行测试任务,实现打包-安装-测试一条线服务, ...

  4. 持续集成工具之Jenkins使用配置

    在上一篇博客中,我们主要介绍了DevOps理念以及java环境和jenkins的安装,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13805666.html: ...

  5. 持续集成工具之Jenkins pipline简单示例

    前文我们主要聊了下jenkins的插件安装.用户及权限管理.邮件发送.配置凭证到gitlab上拉取项目和创建普通job:回顾请参考https://www.cnblogs.com/qiuhom-1874 ...

  6. 持续集成工具hudson【转载】

    第一节 我的理解 项目中使用了hudson,那么hudson是处在怎样的一个地位呢? 首先就我自己的认知,项目中hudson的作用有一下几点: 1.获取svn服务器上的最新代码: 2.把最新代码编译打 ...

  7. 持续集成工具Jenkins安装、部署、使用

    本文介绍jenkins,利用其做项目发布与持续集成交付工具. 一.Jenkins是什么? Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布 ...

  8. 【持续集成】jenkins安装部署从git获取代码

    一:持续集成的概念: 1.1:总体的概括 持续集成Continuous Integration 持续交付Continuous Delivery 持续部署Continuous Deployment 1. ...

  9. linux(centos8):安装Jenkins持续集成工具(java 14 / jenkins 2.257)

    一,什么是Jenkins? 1,jenkins是什么? Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具, 用于监控持续重复的工作,旨在提供一个开放易用的软件平台, 使软件的持续 ...

随机推荐

  1. HDU - 6570 - Wave(暴力)

    Avin is studying series. A series is called "wave" if the following conditions are satisfi ...

  2. javascript面试题(一)

    1. var bar = null; console.log(typeof bar === 'object'); //logs true! 尽管 typeof bar === "object ...

  3. Leetcode 全排列专题(更新ing)

    总览 涉及到的题目有 题号 名字 难度 Leetcode 60 第k个排列 中等 Leetcode 46 全排列 中等 待更新...... Leetcode 46 全排列 题目 基础题 给定一个 没有 ...

  4. nginx 配置下载text等文件

    当前的浏览器能够识别文件格式,如果浏览器本身能够解析就会默认打开,如果不能解析就会下载该文件.比如txt文件就直接被解析,还有其他文件也是一样. 在nginx.conf配置文件中添加 add_head ...

  5. ui自动化---select标签和浏览器等待

    一.select 引入模块from selenium.webdriver.support.select import Select Select(select).select_by_value('') ...

  6. python修改excel内容

    前提:安装pip install xlutils和xlrd 思路:xlrd用来读数据,xlutils用来修改数据:先打开excel——读到原来的sheet页——生成可以修改的excel和sheet页— ...

  7. 实用js方法DataUrl转为File、url转base64

    声明:仅为方便自己所需,也希望能方便他人,如有侵权,联系删除. 1,DataUrl转为File /** * DataUrl转为File * @param {String} dataUrl - data ...

  8. Kubernetes K8S之Service服务详解与示例

    K8S之Service概述与代理说明,并详解所有的service服务类型与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master Cent ...

  9. canvas学习作业,模仿做一个祖玛的小游戏

    这个游戏的原理我分为11个步骤,依次如下: 1.布局, 2.画曲线(曲线由两个半径不同的圆构成) 3.画曲线起点起始圆和曲线终点终止圆 4.起始的圆动起来, 5.起始的圆沿曲线走起来 6.起始的圆沿曲 ...

  10. java 多线程-4

    十四.sleep方法和wait方法的区别 [面试题] 相同点: 一旦执行方法,都可以使得当前线程进入阻塞状态. 不同点: 两个方法的声明位置不同:Thread类声明sleep():Object类中声明 ...