Jenkins-持续集成、交付、构建、部署、测试
Jenkins-持续集成、交付、构建、部署、测试
- 一: Jenkins 介绍
- 1> Jenkins 概念
- 2> Jenkins 目的
- 3> Jenkins 特性
- 4> Jenkins 作用
- 二:Jenkins 版本
- 三:DevOps流程简述
- 1> 持续集成(Continuous Integration,CI)
- 1. 含义
- 2. 步骤
- 3. 优势
- 2> 持续交付(Continuous Delivery,CD)
- 1. 含义
- 2. 新增功能
- 3> 持续构建(Continuous Build,CB)
- 1. 含义
- 2. 核心优势
- 4> 持续测试(Continuous Testing,CT)
- 1. 含义
- 2. 维度
- 5> 持续部署(Continuous Deployment,CD)
- 1. 含义
- 2. 特点
- 6> CI&CD 区别
- 四:Jenkins 作用
- 五:Jenkins 原理
- 1> 安装 Jenkins
- 2> 配置 Jenkins
- 3> 创建作业(Job)
- 4> 构建触发器
- 5> 执行构建
- 6> 构建结果
- 六:Jenkins-部署
- 1> Jenkins-部署-windows
一: Jenkins 介绍
1> Jenkins 概念
Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成;
2> Jenkins 目的
- 持续、自动地构建/测试软件项目。
- 监控软件开放流程,快速问题定位及处理,提示开放效率
3> Jenkins 特性
序列 | 特点 |
---|---|
1 | 开源的java语言开发持续集成工具,支持CI,CD |
2 | 易于安装部署配置:可通过yum安装,或下载war包以及通过docker容器等快速实现安装部署,可方便web界面配置管理 |
3 | 消息通知及测试报告:集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知,生成JUnit/TestNG测试报告。 |
4 | 分布式构建:支持Jenkins能够让多台计算机一起构建/测试。 |
5 | 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。 |
6 | 丰富的插件支持:支持扩展插件,你可以开发适合自己团队使用的工具,如git,svn,maven,docker等 |
4> Jenkins 作用
开发:编写代码并进行源码管理,编写打包提供给测试人员
测试:部署测试环境进行功能测试,持续继承自动化测试;
运维:部署线上环境
二:Jenkins 版本
低版本:https://get.jenkins.io/war-stable/
三:DevOps流程简述
产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线 -> 持续集成 -> 持续交付 -> 持续部署;
DevOps:
是一种软件开发和运维的文化和方法论,其基本思想是通过促进开发团队和运维团队之间的协作和沟通,实现软件开发、测试、部署和运维的自动化和持续化。它强调了团队之间的合作和文化变革,以及使用工具和技术来实现持续交付和持续集成
DevOps优点:
促进团队合作和自动化流程,加速了软件交付速度,提高了软件质量和稳定性,并降低了软件发布的风险。同时,它还增强了团队之间的协作和凝聚力,有助于提高团队的工作效率和生产力
DevOps:
(Development 开发& Operations 运维)
1> 持续集成(Continuous Integration,CI)
核心目标: 确保新增的代码能够与原有代码正确地集成
持续集成是一种软件开发实践,通过频繁地将代码集成到共享存储库中,并自动进行构建和测试,以确保团队能够快速发现和解决集成问题。
1. 含义
持续集成意味着将开发人员的代码更频繁地集成到共享代码仓库中,以确保团队的代码始终处于一个可集成的状态,进而促进更快速地软件交付和更高质量的软件产品
2. 步骤
序列 | 步骤 |
---|---|
1 | 开发人员提交代码到源代码仓库(Source Repository)。 |
2 | CI服务器(持续集成服务器)通过触发机制(如git hook)执行编译、测试以及输出结果等相关功能。 |
3 | CI服务器向开发人员反馈执行结果的报告。 |
3. 优势
序列 | 特点 |
---|---|
1 | 易于定位错误:频繁的代码集成将复杂的代码逻辑切割成小块,有助于更容易地定位和解决问题。 |
2 | 易于控制开发流程:细致的工作提交使得工作进度更容易判断,有助于管理者规划开发流程。 |
3 | 易于CodeReview:代码切分为小块有助于进行代码审查。 |
4 | 易于减少不必要的工作:自动化的构建和测试过程可以节约大量时间,使开发人员能够将更多时间投入到有价值的工作中 |
2> 持续交付(Continuous Delivery,CD)
持续交付是一种软件交付实践,通过自动化和持续的流程,使团队能够随时交付高质量的软件到生产环境,但仍需要人工审查和确认。
1. 含义
持续交付是在持续集成的基础上进行了扩展,主要是在持续集成环节完成了软件构建和测试工作后,形成了新的版本,接下来将进行交付。与持续集成不同的是,持续交付的交付对象不是代码,而是可交付的产物,通常是部署到类生产环境(如灰度环境或预发环境)进行测试
简述:含义是通过一种能够使得软件在较短的循环中可靠地发布的软件工程方法。与持续集成相比,持续交付的侧重点在于实现软件的可交付性,而不仅仅是代码的集成和测试。持续交付通常涉及一些额外的流程,例如部署到类生产环境进行测试、进行灰度测试等,以确保软件能够可靠地发布到生产环境中
2. 新增功能
相比持续集成添加了Test -> Staging -> Production的流程,以确保新增的代码在生产环境中是可用的;
流程 | 步骤 |
---|---|
1 | Test环节不仅包含基本的单元测试,还需要进行更为复杂的功能测试和集成测试等,以确保代码的功能和集成性能。 |
2 | Staging阶段指的是类生产环境,模拟真实的网络拓扑、数据库数据和硬件设备等资源,测试代码在生产环境中的表现。 |
3 | 每个阶段的执行结果都会向开发人员提供反馈,每个错误都可能导致版本的回滚。一旦测试完成并确认无误,相关人员将手动将其部署到生产环境中; |
通过这样的流程,可以确保新增的代码在经过全面的测试和验证后才会部署到生产环境中,从而降低了潜在的生产环境风险,提高了软件的稳定性和可靠性
3> 持续构建(Continuous Build,CB)
1. 含义
持续构建是持续集成的一部分,指的是持续地自动构建软件,并生成可执行的程序或部署包,以便进行进一步的测试和部署。
主要目的:是自动化地构建软件项目,并生成可执行的软件包或部署文件
基本思想:将代码提交到源代码仓库后,立即触发构建过程。这包括编译源代码、执行单元测试、生成部署文件等。持续构建的频繁执行有助于尽早地发现代码中的错误和问题,并及时反馈给开发团队
2. 核心优势
优势 | 含义 |
---|---|
自动化 | 持续构建过程完全自动化,无需人工干预,提高了构建的效率和可靠性。 |
及时反馈 | 持续构建能够在代码提交后立即触发,及时反馈构建结果和错误信息,有助于开发人员及时修复问题。 |
提高软件质量 | 通过频繁地构建和测试,持续构建有助于提高软件的质量和稳定性,减少潜在的问题和缺陷。 |
加快交付速度 | 持续构建能够快速生成可部署的软件包或部署文件,加快了软件交付的速度,有利于快速响应用户需求 |
通过自动化地构建和测试软件,有助于提高软件开发的效率、质量和交付速度
4> 持续测试(Continuous Testing,CT)
持续测试是一种软件测试实践,通过自动化测试和持续集成的方式,持续地对软件进行测试,以确保软件质量和稳定性。
1. 含义
持续测试(Continuous Testing,CT)是DevOps流程中的一个关键环节,它旨在通过持续地进行自动化测试来确保软件质量和稳定性。
持续测试与传统的软件测试方式不同,它不仅限于在开发完成后执行一次测试,而是在整个软件开发周期中持续进行测试
2. 维度
优势 | 含义 |
---|---|
自动化测试 | 持续测试依赖于自动化测试工具和脚本,通过编写自动化测试用例和脚本来模拟用户操作、执行功能和性能测试等,以确保软件的功能和性能符合预期。 |
并行测试 | 持续测试需要在短时间内完成大量测试,因此通常会采用并行测试的方式,同时运行多个测试用例,提高测试效率。 |
持续反馈 | 持续测试会及时将测试结果反馈给开发团队,包括测试通过的用例、失败的用例以及错误信息等,以便开发人员及时修复问题。 |
自动化部署测试环境 | 持续测试还可以借助自动化部署工具,在需要时自动部署测试环境,并在其中执行测试,从而确保测试环境的一致性和可重复性。 |
5> 持续部署(Continuous Deployment,CD)
持续部署是一种软件部署实践,通过自动化流程将经过测试的软件自动部署到生产环境,以实现快速且可靠的软件发布
1. 含义
持续部署(Continuous Deployment,CD)是DevOps流程中的一环,它建立在持续交付的基础之上,旨在将软件的部署过程自动化,以便将新的软件功能频繁地交付到生产环境中
2. 特点
优势 | 含义 |
---|---|
自动化部署 | 持续部署通过自动化工具和流程,将新的软件功能自动部署到生产环境中,消除了手动部署过程中的人为错误和延迟。 |
频繁交付 | 持续部署强调频繁地交付新的软件功能到生产环境中,从而加速了软件开发和交付的速度,提高了团队的反应能力和灵活性。 |
实时监控 | 持续部署过程中通常会包括实时监控和反馈机制,以确保部署的软件功能在生产环境中稳定运行,及时发现并解决潜在的问题。 |
版本控制 | 持续部署依赖于版本控制系统和自动化工具,确保部署的软件版本与代码仓库中的代码保持一致,减少了版本管理和部署的复杂性。 |
6> CI&CD 区别
区别1 | CI | CD |
---|---|---|
1 | 指开发人员将代码提交到代码仓库后,自动触发构建、测试等过程,但并不自动将代码部署到生产环境 | 更进一步,除了包含持续集成的流程外,还将代码自动部署到类生产环境(例如预发布环境或灰度环境)进一步的测试和验证 |
2 | 主要目的是确保团队成员的代码能够及时集成,并通过自动化的测试流程进行验证,从而尽早地发现和解决潜在的集成问题 | 目标是确保团队能够随时准备好将代码部署到生产环境,但仍然需要人工的干预来决定何时进行实际的生产部署。 |
3 | 更加强调自动化部署和测试的全流程,以确保新的功能能够及时交付到类生产环境,但仍然保留了人工决策的环节,以便进行最终的生产部署 |
四:Jenkins 作用
持续集成(CI)目前已成为许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程;
团队一般如下挑战,部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。
优势 | 含义 | - |
---|---|---|
1 | 软件构建自动化 | 配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。 |
2 | 建可持续的自动化检查 | CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力。 |
3 | 构建可持续的自动化测试 | 构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。 |
4 | 生成后后续过程的自动化 | 当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。 |
五:Jenkins 原理
Jenkins 是一个开源的持续集成工具,用于监控持续重复的工作,如软件开发的持续集成和持续部署过程。以下是 Jenkins 的基本运行原理:
1> 安装 Jenkins
在服务器上安装 Jenkins。你可以通过多种方式安装,例如,通过下载 war 文件并运行它,或者使用包管理器(如 apt-get 或 yum)安装。
2> 配置 Jenkins
安装完成后,你需要进行基本配置,例如,配置 Jenkins 的工作区、插件安装、用户权限等。
3> 创建作业(Job)
在 Jenkins 中,作业被称为 “项目” 或 “Job”。你可以创建一个新的作业,指定源代码仓库(如 Git、SVN)、构建触发器和构建环境。
4> 构建触发器
可以设置各种触发器来启动构建,例如定时(如每天定时)、来自于代码仓库的 hook、手动启动等。
5> 执行构建
当触发构建触发器时,Jenkins 将会从源代码仓库中获取最新的代码,然后根据配置执行构建过程,这通常包括编译、测试、打包等步骤。
6> 构建结果
构建完成后,Jenkins 会根据结果生成报告,并可以触发进一步的动作,如部署到测试环境或生产环境。
六:Jenkins-部署
1> Jenkins-部署-windows
https://blog.csdn.net/weixin_42914706/article/details/145018771