当前位置: 首页 > article >正文

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 目的

  1. 持续、自动地构建/测试软件项目。
  2. 监控软件开放流程,快速问题定位及处理,提示开放效率

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)。
2CI服务器(持续集成服务器)通过触发机制(如git hook)执行编译、测试以及输出结果等相关功能。
3CI服务器向开发人员反馈执行结果的报告。

3. 优势

序列特点
1易于定位错误:频繁的代码集成将复杂的代码逻辑切割成小块,有助于更容易地定位和解决问题。
2易于控制开发流程:细致的工作提交使得工作进度更容易判断,有助于管理者规划开发流程。
3易于CodeReview:代码切分为小块有助于进行代码审查。
4易于减少不必要的工作:自动化的构建和测试过程可以节约大量时间,使开发人员能够将更多时间投入到有价值的工作中

2> 持续交付(Continuous Delivery,CD)

持续交付是一种软件交付实践,通过自动化和持续的流程,使团队能够随时交付高质量的软件到生产环境,但仍需要人工审查和确认。

1. 含义

持续交付是在持续集成的基础上进行了扩展,主要是在持续集成环节完成了软件构建和测试工作后,形成了新的版本,接下来将进行交付。与持续集成不同的是,持续交付的交付对象不是代码,而是可交付的产物,通常是部署到类生产环境(如灰度环境或预发环境)进行测试
简述:含义是通过一种能够使得软件在较短的循环中可靠地发布的软件工程方法。与持续集成相比,持续交付的侧重点在于实现软件的可交付性,而不仅仅是代码的集成和测试。持续交付通常涉及一些额外的流程,例如部署到类生产环境进行测试、进行灰度测试等,以确保软件能够可靠地发布到生产环境中

2. 新增功能

相比持续集成添加了Test -> Staging -> Production的流程,以确保新增的代码在生产环境中是可用的;

流程步骤
1Test环节不仅包含基本的单元测试,还需要进行更为复杂的功能测试和集成测试等,以确保代码的功能和集成性能。
2Staging阶段指的是类生产环境,模拟真实的网络拓扑、数据库数据和硬件设备等资源,测试代码在生产环境中的表现。
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 区别

区别1CICD
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


http://www.kler.cn/a/472686.html

相关文章:

  • Python入门教程 —— 网络编程
  • 道品科技智慧农业与云平台:未来农业的变革之路
  • 什么是网络安全攻防演练,即红蓝对抗?
  • LabVIEW调用不定长数组 DLL数组
  • 《HeadFirst设计模式》笔记(上)
  • GaussDB SQL调优之改写SQL消除子查询
  • 腾讯云AI代码助手编程挑战赛——贪吃蛇小游戏
  • QT学习二十一天 Quick 应用程序主窗口
  • 了解SQL
  • MongoDB的部署和操作
  • 微服务面试相关
  • Qt之Cannot create children for a parent that is in a different thread问题分析
  • uniapp的两种弹窗方式
  • ffmpeg aac s16 encode_audio.c
  • idea 编辑竖列:alt +shift+insert
  • Python的Matplotlib库应用(超详细教程)
  • C++ ——— 匿名对象
  • Spring AI零起点搭建AI应用
  • spring:xml声明bean的多种方式。
  • 电脑32位和64位之区别(Difference between 32-Bit and 64 Bit Computers)
  • Python —— 常用的字符串方法
  • STM32-笔记39-SPI-W25Q128
  • python matplotlib.pyplot中绘制带文字标注的箭头,使其指向某一特定数据点
  • 使用SpringBoot-data-mongodb操作MongoDB
  • 总结2024,迎接2025
  • 一套极简易的直流无刷电机(Deng FOC)开发套件介绍