首页 > 其他分享 >Jekins - [01] 概述

Jekins - [01] 概述

时间:2024-05-14 13:53:45浏览次数:16  
标签:集成 01 Jekins 部署 代码 持续 概述 测试 构建

“持续集成并不能消除Bug,而是让它们非常容易发现和改正。” —— Martin Fowler

 

一、概述

1.1、持续集成(CI)

  持续集成(Continuous integration)指的是频繁地(一天多次)将代码集成到主干。

  它的好处主要有两个:

    • 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容器。
    • 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

  持续集成强调开发人员提交了新代码之后,立刻进行构建、单元测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

 

1.2、持续交付(CD)

  持续交付(Continuous delivery)指的是频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

  持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。

  持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境 [类生产环境] (production like environments)中。比如我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。

 

 

1.3、持续部署(CD)

  持续部署(Continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

  持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。

  持续部署的前提是能自动化完成测试、构建、部署等步骤。

 

 

二、持续集成的操作流程

根据持续集成的设计,代码从提交到生产,整个过程有以下几步。

 

Step1:提交

流程的第一步,是开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交(commit)。

 

Step2:测试(第一轮)

代码仓库对commit操作配置了钩子(hook),只要提交代码或者合并进主干,就会跑自动化测试。

测试的种类:

  • 单元测试:针对函数或模块的测试。
  • 集成测试:针对整体产品的某个功能的测试,又称功能测试。
  • 端对端测试:从用户界面直达数据库的全链路测试

 

Step3:构建

通过第一轮测试,代码就可以合并进主干,就算可以交付了。

交付后,就先进行构建(build),再进入第二轮测试。所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等。

常用的构建工具如下:

  • Jekins
  • Travis
  • Codeship
  • Strider

Jenkins和Strider是开源软件,Travis和Codeship对于开源项目可以免费使用。它们都会将构建和测试,在一次运行中执行完成。

 

Step4:测试(第二轮)

构建完成,就要进行第二轮测试。如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时构建步骤也要移到第一轮测试前面。

第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化的测试用例,就要人工跑。

需要强调的是,新版本的每一个更新点都必须测试到。如果测试的覆盖率不高,进入后面的部署阶段后,很可能会出现严重的问题。

 

Step5:部署

通过了第二轮测试,当前代码就是一个可以直接部署的版本(artifact)。将这个版本的所有文件打包(tar filename.tar)存档,发到生产服务器。

生产服务器将打包文件,解包成本地的一个目录,再将运行路径的符号链接(symlink)指向这个目录,然后重新启动应用。这方面的部署工具有ansible,Chef,Puppet等。

 

Step6:回滚

一旦当前版本发生问题,就要回滚到上一个版本的构建结果,最简单的做法就是修改一下符号链接,指向上一个版本的目录。

 

 

 

— 要养成终身学习的习惯 —

标签:集成,01,Jekins,部署,代码,持续,概述,测试,构建
From: https://www.cnblogs.com/houhuilinblogs/p/18191155

相关文章

  • KBPC5010-ASEMI电源控制柜专用KBPC5010
    编辑:llKBPC5010-ASEMI电源控制柜专用KBPC5010型号:KBPC5010品牌:ASEMI封装:KBPC-4正向电流(Id):50A反向耐压(VRRM):1000V正向浪涌电流:400A正向电压(VF):1.00V引脚数量:4芯片个数:4芯片尺寸:88MIL功率(Pd):大功率设备工作温度:-55°C~150°C类型:整流桥、插件整流桥KBPC5010整流桥描述......
  • 【编译器001-001】总览
    参考资料BuildingaCompiler国内搬运[中英字幕]C#构建编译器(BuildingaCompiler)代码地址:https://github.com/terrajobst/minsk具体思路这个作者使用的是dotnet,而我对dotnet不怎么感冒,所以我的方式是先使用dotnet跟着抄一遍,然后使用自己喜欢的语言写一......
  • 数据结构概述
    数据结构定义我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应操作,这个相应的操作也叫算法数据结构=个体+个体的关系算法=对存储数据的......
  • 42天【代码随想录算法训练营34期】第九章 动态规划part04(● 01背包问题,你该了解这些!
    **416.分割等和子集**classSolution:defcanPartition(self,nums:List[int])->bool:_sum=0dp=[0]*10001fornuminnums:_sum+=numif_sum%2==1:returnfalsetarget=......
  • Nginx-01-为什么使用 Nginx? nginx 的优缺点
    为什么要选择nginx,和其他常见的负载均衡库对比有什么优缺点?选择Nginx作为负载均衡器有很多原因,主要包括其性能、灵活性和广泛的功能。Nginx的优点高性能和低资源占用:Nginx以其高性能和低资源占用著称。它可以处理大量的并发连接,适用于高流量网站。灵活的配置:Ngi......
  • N1CTF2018 shopping:多线程堆题中堆溢出的应用
    介绍一种在多线程堆题中利用堆溢出达成任意地址分配的手法。我们知道,一个进程的主线程的堆管理main_arena在libc中,分配的chunk在堆段中。那么子线程的arena和堆块都在哪里呢?这一大串在libc前面一点点的anon就是给子线程留的arena和堆空间。arena和tcache管理chunk在这个内存段......
  • Nginx-01-聊一聊 nginx
    nginx系列Nginx-01-聊一聊nginxNginx-01-Nginx是什么Nginx-02-为什么使用NginxNginx-02-NginxUbuntu安装+windows10+WSLubuntu安装nginx实战笔记Nginx-02-基本使用Nginx-03-Nginx项目架构Nginx-04-DockerNginxNginx-05-nginx反向代理是什么?windows下如......
  • 洛谷P3556 [POI2013] MOR-Tales of seafaring的三种解法
    本题模板为奇偶最短路(边权为1时的),题目链接:https://www.luogu.com.cn/problem/P3556为了研究,码了三种不同最短路解放的奇偶做法,便于不同群体理解.一:BFS,对于边权为1,求最短路当然是BFS最快了,时间复杂度:o(nm),代码如下:点击查看代码//背景:我的BFS奇偶最短路尝试//思......
  • Java-SSM-Day01 Maven实战案例:构建微服务Maven工程架构
    1.项目需求与结构分析:  需求案例:搭建一个电商平台项目,该平台包括用户服务、订单服务、通用工具模块等。项目架构:1.用户服务:负责处理用户相关的逻辑,例如用户信息的管理、用户注册、登录等。2.订单服务:负责处理订单相关的逻辑,例如订单的创建、订单支付、退货、订单查......
  • Testing Egineer note:2024_5_13-day08-part01
    肖SIR__数据库之搭建__11.2数据库之搭建1、rpm-qa|grep服务名称案例:rpm-qa|grepmysql2、将所有msyql的包删除干净删除方法:(1)yumremovemysql*删除linux中的数据库(2)yumerase包名,删除linux中的数据库(3)rpm-e--nodeps包名删除linux中的数据......