Jenkins自动化构建成过程,可帮助我们节省大量时间,完成这个过程的自动化后,在以后的开发过程中,我们需要做的,就是只是提交代码到版本库中,构建自动完成,基本不再需要人工干预。

代码仓库作为构建的素材库,构建所需的代码从代码库中获得。

最好有一台服务器单独作为持续集成服务器,一方面保证了环境的纯净,一方面不影响开发,而且持续集成服务器一般是随时准备开始构建的,所以一般也不关机。

[首先要有统一的代码库,服务器不断从版本控制服务器上检查代码状态,看代码是否有更新。如果发现有代码更新,那么就从版本控制服务器下载最新的代码。等代码完全更新以后,调用自动化编译脚本,进行代码编译。然后运行所有的自动化测试,并且进行代码分析。如果其中任何一个步骤失败,就表示build失败,持续集成服务器会给予响应的反馈。每次代码提交之后,都会在持续集成服务器上触发一个定时构建,然后进行编译、部署。]

[原则]

1.开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;

2.需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;

3.必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。

4.不更新构建失败的代码

开发人员及时的提交代码进行构建是符合上述实践的,及时拉取代码可以防止工作中的分支偏离主干分支太多。定时触发构建或者通过检测代码的修改情况在触发构建都是可以的,主要是根及时的构建新的代码。如果构建失败,则必要及时处理导致失败的问题,修复后重新构建。当然构建失败的代码就不要拉到本地了,会污染一个本来是可以运行的工作区。

[持续集成工具]

讲了这么多概念,有没一种工具把这种实践实现呢?当然有,常见的持续集成工具如下:

jenkins

travis

gitlab

buddybuild

仅列举了一些典型的,Jenkins 是传统型的工具,前身是 Hudson,04 年到现在已经有十多年的历史,后几个是最近几年出现的新一批,多少都和容器技术有点关系,这里我们主要介绍 Jenkins,因为这个工具比较常用,各种开发实践都可以通过大量的插件来组合实现,可定制性好很多。

jenkins

1
jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。— 维基百科

Jenkins 有哪些功能呢?

1.定时拉取代码并编译

2.静态代码分析

3.定时打包发布测试版

4.自定义额外的操作,如跑单元测试等

5.出错提醒

基本上都是持续集成实践中的要求和周边的一些实现措施,如提醒功能等,出错后及时提醒开发者修复,Jenkins 中通过配置 SMTP 配置信息(这个一般的邮件服务提供商都有提供),邮件模板等,创建事件触发器,在事件(如编译失败)发生时,及时发送邮件通知开发者,挺方便的。

Jenkins 有很多种触发构建的方式,如 webhook,定时更新代码等,同时可以在触发构建后执行自定义的构建操作,通过编辑自定义的构建脚本,几乎可以进行任何构建操作。

图片理解

1)齿轮:如果将java/maven/ant/git/tomcat/jenkins等软件比喻为齿轮,如下图

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

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

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

某个博客的理解

[是什么]

jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使得持续集成编程可能。它的前身是hudson,是基于java开发的一种持续集成工具,它可以根据配置进行持续定期编译,运行相应的代码,将运行结果发送至邮件或者展示成报告等。

[为什么]

jenkins作为持续集成的标志性工具,自然是有了持续集成的众多优点。jenkins可以做一些自动化的build,只要我们把jenkins搭建成功,可以设置几分钟build一次,在定时自动build,验证单元测试,如果发生错误则把错误报告以email形式发送给项目模块负责人。

[宏观理解]

先来张图,大致理解下宏观:

详细介绍:

至于关于邮件的配置,也是为了方便我们的开发和管理,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


转载于:https://blog.51cto.com/kaile/1956267

jenkins集群测试环境原理相关推荐

  1. 一键安装k8s集群测试环境

    系统:centos7.9 - 2009 //只支持centos7 mini 安装即可 配置要求:内存2G以上 export release=3.0.0yum install wget -ywget h ...

  2. kubernetes 1.5 + nginx负载均衡 + jenkins集群 实战(一)

    背景: 如题,公司要部署一套这个东东,故找了些设备部署起来看看好不好使,本人鄙陋,这个文章只做个测试参考,抛砖引玉,如有大神指教,可以加一下我的QQ,好,废话少说,开始吧! 大概步骤: 1    环境 ...

  3. 基于k8s多集群隔离环境下的devops实现

    简介:本方案使用两个独立的k8s集群:用户已有的k8s模拟测试,ack集群模拟生产环境,保证环境的高度隔离,互不影响.通过gitlab+Jenkins的黄金组合,实现容器应用的自动化构建和持续部署,提 ...

  4. jenkins~集群分发功能的具体实现

    前一讲主要说了jenkins分发的好处<jenkins~集群分发功能和职责处理>,它可以让具体的节点干自己具体的事,比如windows环境下的节点,它只负责编译,发布windows的生态环 ...

  5. 一文道明Redis集群架构工作原理及搭建

    文章目录 前言 一.Redis-Cluster(集群)长什么样子? 二.Redis-Cluster集群搭建 1. Redis集群搭建 2. 客户端测试 3. 增加主节点(6000)到集群环境中 4. ...

  6. 集群概述及原理笔记(1)

    it你好linux学习文档之集群概述及原理笔记(1) 一 前言 目前,越来越多的网站采用Linux操作系统,提供邮件.Web.文件存储.数据库等服务.也有非常多的公司在企业内部网中利用Linux服务器 ...

  7. centos7公司内网环境搭建集群性能测试环境(ip+域名部署)

    1.原因 一直以来,都是买云端的服务器,用来做测试服务器.这种方式用来测试功能是没有问题.但如果想搭集群的环境来测试的话,这种买云端的服务器就太费钱了.所以我们基于省钱的角度,在某宝上买了一台二手的服 ...

  8. 集群应用服务器环境中会话管理(复制)的Oracle Coherence最佳实践

    Oracle Coherence是一种内存中数据网格产品,也广泛用于跨应用程序服务器节点集群的会话复制. 它支持各种应用程序服务器,例如WebLogic,WebSphere,Tomcat,JBoss等 ...

  9. k8s集群PHP环境使用

    一.环境介绍 k8s版本: 1.15.2 存储: 阿里云NAS 测试代码: wordpress 二.下载wordpress和创建好数据库等 1.下载wordpress wget https://cn. ...

最新文章

  1. CVPR 2021:记一次神奇的 Rebuttal 经历
  2. 我猜你没听过UI自动化技术?
  3. android 中国通信乱码问题
  4. Anaconda中Jupyter notebook打开后闪退问题解决方法
  5. JVM - 基本类型的包装类和对象池
  6. 提高 TDD 效率的一些小诀窍
  7. XCTF WEB weak_auth
  8. 浅谈深度学习(Deep Learning)的基本思想和方法
  9. 计算机网络基础:网络标准相关知识介绍
  10. 编译Linux 2.6内核
  11. vs 下如何调试js
  12. excel中怎么把超链接的结果(图片)直接显示出来_把500张产品图片导入Excel里?用这个方法可超速完成,码住...
  13. 【软件测试】单元测试的主要任务不包括全局数据结构
  14. oracle erp系统好用么,oracleerp系统优缺点
  15. android edittext 字母数字键盘,android EditText默认数字键盘,能输入字母,数字和中文...
  16. 逻辑机房(LDC)是什么
  17. 微信吸粉秘籍之人气论坛吸粉方法
  18. Android绘制跟随路径移动的圆圈
  19. 论文阅读《Fast-MVSNet: Sparse-to-Dense Multi-View StereoWith Learned Propagation and Gauss-Newton Refine》
  20. 【大学物理·恒定电流的磁场】恒定磁场的高斯定理与安培环路定理

热门文章

  1. Java中字符串工具类继承org.apache.commons.lang3.StringUtils类代码
  2. 需求评审五个维度框架分析及其带来的启示-4-需求条目化管理
  3. flutter创建可移动的stack小部件
  4. 神策 FM:做一名数据分析师是什么体验?
  5. 中青旅:在线旅游行业如何选型数据分析平台?
  6. virtualbox+vagrant学习-2(command cli)-20-vagrant suspend命令
  7. 在阿里云服务器(Ubuntu系统)下使用WordPress搭建博客网站教程
  8. C语言库函数大全及应用实例十四
  9. 10g物理standby主备switchover方式切换详述
  10. 【推荐】极简数独1.0源码