Jenkins学习(1)-什么是Jenkins

转发自:

https://blog.csdn.net/miss1181248983/article/details/82840006
https://www.jianshu.com/p/5f671aca2b5a
https://blog.csdn.net/houyefeng/article/details/50912756
http://www.sohu.com/a/318426094_371153

一、了解Jenkins前,首先了解什么是继续集成                                                                                                                       

CI/CD介绍
互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段:

编码 → 构建 → 集成 → 测试 → 交付 → 部署

 在这里插入图片描述

正如你在上图中看到,持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)有着不同的软件自动化交付周期。

1、持续集成(CI)
上面整个流程中最重要的组成部分就是持续集成(Continuous integration,简称CI)。

持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。

持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。借用网络图片对CI加以理解。

它的好处主要有两个:

1. 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;

2. 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

在这里插入图片描述

持续集成并不能消除Bug,而是让它们非常容易发现和改正。持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

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

持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。

 在这里插入图片描述

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

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

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

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

 

总的来说,持续集成、持续交付、持续部署提供了一个优秀的 DevOps 环境。对于整个开发团队来说,能很大地提升开发效率,好处与挑战并行。无论如何,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分。

  

二、什么是Jenkins                                                                                                                                                      

Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。

Jenkins是可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的平台。通过Jenkins可以自动化代码从变更到上线过程中的多个步骤,实现快速迭代。除了加速构建,通过Jenkins也可以实现测试的持续集成:

• 开发变更代码并提交到Git/SVN等仓库,Jenkins识别到开发代码的变更,按配置进行手动或者自动更新待测应用对应的Jenkins工程。

• 测试人员新增待测应用对应的自动化测试工程,通过Hook和待测应用Jenkins工程关联起来,一旦识别到待测应用工程有更新就开始运行自动化测试的工程,进行API,UI等自动化测试,生成测试报告并发送邮件给干系人。

Jenkins通常与版本管理工具(SCM:Source Control Management)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。

Jenkins虽然本身使用Java开发,但也能用来做其他语言开发的项目CI。

Jenkins可在Tomcat等流行的servlet容器中运行,也可独立运行。
 
Jenkins特性:

1)开源的java语言开发持续集成工具,支持CI,CD;

2)易于安装
  不需要安装、不需要数据库,通过yum安装、或下载war包以及通过docker容器等快速实现安装部署

3)易于配置

  所有的配置都可能通过jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改xml文件进行配置

4)消息通知及测试报告

       集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。生成JUnit或TestNG的测试报告

5)文件识别

  jenkins能跟踪每次构建生成哪些jar包,以及使用哪个版本的jar包

6)分布式构建

       jenkins支持让多台计算机一起构建/测试;

7)插件支持

     jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件。如git,svn,maven,docker等。

原文地址:https://www.cnblogs.com/yickel/p/11945802.html