SkyEye与Jenkins的DevOps持续集成解决方案

news2024/11/16 19:27:54

在技术飞速发展的当下,随着各行各业的软件逻辑复杂程度提升带来的需求变更,传统测试已无法满足与之相对应的一系列测试任务,有必要引入一个自动化、可持续集成构建的DevOps平台来解决此类问题。本文将主要介绍SkyEye与Jenkins的持续集成解决方案。

何谓DevOps?DevOps是一种软件开发和运维的文化和方法论,旨在加强开发人员(Development)和运维团队(Operations)之间的合作与协调,以实现更高效、更快速、更稳定的软件交付和部署过程,强调通过自动化和持续反馈来实现软件开发、测试、部署和运维的无缝衔接,以及不断地改进和优化整个交付流程。

构建一个持续集成环境必须满足以下三个条件:

(1) 一个自动构建过程,包括自动编译、分发、部署和测试等;

(2) 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库;

(3) 一个持续集成服务器。

持续集成需要结合多个工具来完成整套工作流。工具链的功能及相关技术如下表所示:

▲ 业务流程与工具链的对应关系

01.SkyEye简介

SkyEye,中文全称天目全数字实时仿真软件,是国产自主可控的基于可视化建模的硬件行为级仿真平台,能够为嵌入式软件提供虚拟化运行环境,开发、测试人员可在该虚拟运行环境上进行软件开发、软件测试和软件验证活动。

基于SkyEye的持续集成流程图如下图所示:

▲ 基于SkyEye全数字仿真软件的持续集成流程演示图

基于SkyEye的持续集成流程所涉及的工具链有:

▲嵌入式软件测试工具链实现技术

02.Jenkins简介

Jenkins是一个开源的自动化服务器工具,用于构建、测试和部署软件项目,同时也是适用于持续集成(CI)和持续交付(CD)的工具,可以帮助开发团队自动化软件开发流程中的各种任务。

Jenkins的主要特点和功能有:

自动化构建:允许开发团队在代码提交到版本控制库(如Git)时触发自动化构建过程。每当有新代码提交时,Jenkins就会自动拉取最新代码并构建项目,以确保项目的可编译性。

持续集成:通过将开发人员的代码集成到共享代码库中,并在每个代码提交时进行构建和测试来支持持续集成,可以与各种版本控制系统(如Git、Subversion等)集成,以监视代码的变化并自动触发构建过程。

插件生态系统:具备庞大的插件生态系统,可以扩展其功能和集成其他开发和部署工具;插件可以用于构建工具、测试框架、静态代码分析、部署到云平台等。

可扩展性:可以根据项目需求进行自定义配置,允许用户创建自定义构建过程、添加自定义脚本和命令,并与其他工具和服务集成。

可视化界面:提供易于使用的Web界面,用户可以管理和监控构建过程,还可查看构建历史、设置构建触发器、监视构建输出等。

分布式构建:允许将构建任务分发到多个代理节点上执行,有助于加快构建过程并提高整体性能。

报告和通知:可以生成详细的构建报告,包括测试结果、代码覆盖率和静态代码分析结果等,还可以通过电子邮件、即时消息和其他渠道向团队成员发送构建状态和通知。

Jenkins的灵活性和可定制性使其成为持续集成和持续交付流程中的重要工具。它能够自动执行复杂的构建任务、及时提供反馈和报告,并促进团队合作和协同开发。无论是小型项目还是大型企业级应用程序,Jenkins都可以帮助开发团队提高效率、降低风险,并提供高质量的软件交付。

03.SkyEye与Jenkins持续集成

SkyEye与Jenkins集成有着诸多优势:

摆脱特定硬件限制:可以在PC上进行多种型号的嵌入式软件测试; 

脚本化配置:减少复杂的配置过程,让操作过程更简单;

自动化测试:Jenkins持续集成工具可以自动化完成构建环节,同时,通过增加集成频次尽早发现缺陷避免方向性错误;

降低风险:一天内可进行多次集成仿真测试,有利于检查缺陷,了解软件的状况;

不受时间、地点限制:任何时间、任何地点都生成可部署的软件,利用持续集成,可以随时对源码进行小改动,并将这些改动和其他代码进行集成,及时测试。

SkyEye与Jenkins持续集成的流程为:

1. 源码管理/SkyEye工程/测试数据管理:

通过SkyEye构建好相应的工程,将构建好的工程上传至Gitea仓库project分支,并将源码上传至Gitea仓库code分支。

2. 代码修改:

通过git add/git commit/git push操作,git push指令触发webhock通知Jenkins进行自动构建任务。

3. Jenkins收到指令构建任务:

拉取Gitea仓库中的源码以及工程,将源码通过CCS编译后生成二进制文件。

4. 二进制文件部署:

将二进制文件拷贝到SkyEye工程中。

5. 通过SkyEye进行自动化测试:

通过Python脚本或者命令行指令进行自动化测试,生成测试结果。

6. Jenkins自动发送邮件:

通过邮件告知任务构建情况以及测试结果。

其中,Jenkins配置过程如下图所示:

(1) 配置slave节点,保证服务器与测试服务器联通;

▲ slave节点配置

(2) 新建持续集成任务;

▲ 新建任务配置

(3) 克隆源代码、测试脚本、仿真工程;

▲ 克隆源代码配置

▲ 克隆测试数据配置

▲克隆测试工程配置

(4) 配置编译脚本、自动化测试脚本;

▲编译脚本、自动化测试脚本配置

(5) 邮件配置;

▲ 邮件模板配置

(6) 执行过程;

▲ Jenkins中测试用例执行

(7) 测试结果知会。

使用Python脚本对测试结果进行整理,并通过Jenkins自带邮件插件进行告知,通知测试结果。

▲邮件接收测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/804715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL基础扎实——Like声明中的%什么意思

语意讲解 在MySQL的LIKE语句中,%是一个通配符,用于匹配任意长度(包括零长度)的字符序列。 具体来说,当使用%放置在LIKE语句中的模式中时,它表示可以匹配任意字符的序列。这个字符序列可以是零个字符、一个…

VOC 格式与 YOLO 格式的相互转换

目录 数据集介绍VOC 格式转换为 YOLO 格式YOLO 格式转换为 VOC 格式 数据集介绍 本文使用的数据集是自制的安全帽数据集,共含有 6696 张图片,部分图片如下: 以及对应的 6696 个 VOC 格式的 xml 标注文件,部分文件如下&#xff1a…

[Linux]进程间通信

[Linux]进程间通信 文章目录 [Linux]进程间通信进程间通信什么是进程间通信进程间通信的目的进程间通信的本质为什么存在进程间通信进程间通信的分类 管道什么是管道匿名管道本质pipepipe的使用匿名管道读写情况匿名管道的特征 命名管道本质命令行创建命名管道创建和删除命名管…

SolidWorks绘制Maxwell仿真用带桥接的三维平板螺旋线圈

文章目录 前言一、建立涡状线二、拉伸方法1(建立工作面,较复杂)三、拉伸方法2(穿透,较简单)四、建立桥接 前言 在使用Maxwell进行电磁场仿真时,经常需要绘制各种异形线圈,由于Maxwel…

5.定时器-间歇函数

网页中经常会需要一种功能:每隔一段时间需要自动执行一段代码,不需要我们手动去触发 例如:网页中的倒计时 ●要实现这种需求,需要定时器函数 5.1开启定时器 语法 setInterval(函数,间隔时间)作用:每隔一段时间调用这…

Spring 6【单例设计模式、bean标签的scope属性、Spring 循环注入问题】(八)-全面详解(学习总结---从入门到深化)

目录 十五、单例设计模式 十六、bean标签的scope属性 十七、Spring 循环注入问题 十五、单例设计模式 设计模式:根据面向对象五大设计思想衍生出的23种常见代码写法,每种写法可以专门解决一类问题。 单例设计模式:保证某个类在整个应用程…

一文搞懂加密和接口签名小知识

最近在做的接口自动化测试工程中,一些接口需要签名,涉及到了加解密的一些知识,顺手梳理了下,分享给大家。 主要分为四个部分介绍: 一、基础概念 二、加密算法介绍 三、接口签名 四、实例分析 一、基础概念 加密是…

Leetcode 27 移除元素 代码逐行讲解

Leetcode 27 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考…

Go语言中的结构体详解

关于 Golang 结构体 Golang 中没有“类”的概念,Golang 中的结构体和其他语言中的类有点相似。和其他面向对 象语言中的类相比,Golang 中的结构体具有更高的扩展性和灵活性。 Golang 中的基础数据类型可以表示一些事物的基本属性,但是当我们…

【Python】二维离散小波变换(2D-DWT)实现

文章目录 小波变换程序实现子带数学公式 小波变换 小波变换(Wavelet Transform)是一种数学信号处理技术,用于将信号或图像分解为不同频率的小波成分,从而可以在不同时间尺度上分析信号的特征。小波变换具有许多重要的特性&#x…

安装Python之后 安装库报错 There was an error checking the latest version of pip.

报错代码 & 图片如下 Looking in indexes: https://pypi.tuna.tsicmdnghua.edu.cn/simple WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by NewConnectionError(<pip._vendor.urllib3.connection.HT…

Matplotlib_概述_绘制图象

⛳绘制基础 在使用 Matplotlib 绘制图形时&#xff0c;其中有两个最为常用的场景。一个是画点&#xff0c;一个是画线。 pyplot 基本方法的使用如下表所示 方法名说明title()设置图表的名称xlabel()设置 x 轴名称ylabel()设置 y 轴名称xticks(x, ticks, rotation)设置 x 轴的…

【蓝图】p44简单解密机关

p44简单解密机关 p44简单解密机关文字提示开门文字提示开灯For Each Loop和For Each Loop With Break区别For Each LoopFor Each Loop With Break小操作&#xff1a;改变走线Execute Console Command(执行控制台命令) p44简单解密机关 文字提示开门 创建Actor蓝图类&#xff…

软件测试生命周期

本章简要介绍了软件开发项目中常用的生命周期模型&#xff0c;并解释了测试在每个模型中扮演的角色。它讨论了各种测试级别和测试类型之间的区别&#xff0c;并解释了这些在开发过程中的应用位置和方式。 大多数软件开发项目是按照事先选择的软件开发生命周期模型来计划和执行…

win11任务栏不合并 终于回归啦

25915.1000 win11任务栏不合并 终于回归啦&#xff01;&#xff01;&#xff01; 下载地址&#xff1a;https://uup.rg-adguard.net/

Jenkins搭建最简教程

纠结了一小会儿&#xff0c;到底要不要写这个&#xff0c;最终还是决定简单记录一下&#xff0c;因为Jenkins搭建实在是太简单了&#xff0c;虽然也有坑&#xff0c;但是坑主要在找稳定的版本上。 先学一个简称&#xff0c;LTS (Long Term Support) 属实是长见识了&#xff0c…

Excel透视表与python实现

目录 一、Excel透视表 1、源数据 2、数据总分析 3、数据top分析 二、python实现 1、第一张表演示 2、第二张表演示 一、Excel透视表 1、源数据 1&#xff09;四个类目&#xff0c;每类50条数据 2&#xff09;数据内容 2、数据总分析 1&#xff09;选择要分析的字段&…

live-server本地起node服务解决跨域问题

一、初始化node,构建package.json NPM 全局安装live-server npm install -g live-server在当前项目文件夹下cmd运行&#xff1a; npm init -y此时会在根目录下生成一个package.json文件。 二.生成代理脚本 在根文件夹新建一个build.js文件&#xff08;名字可以自定义) var …

银行项目性能压测?关键链路性能压力测试,测试老鸟总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 随着银行业数字化…

Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集

Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集 前言相关介绍COCO格式实例分割数据集转换为YOLO格式实例分割数据集coco格式对应的json文件&#xff0c;以test.json为例格式转换代码&#xff0c;内容如下 前言 由于本人水平有限&#xff0c;难免出现错漏&#xf…