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

在技术飞速发展的当下,随着各行各业的软件逻辑复杂程度提升带来的需求变更,传统测试已无法满足与之相对应的一系列测试任务,有必要引入一个自动化、可持续集成构建的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自带邮件插件进行告知,通知测试结果。

▲邮件接收测试结果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中文UT方法执行报错问题、wps默认保存格式

wps默认保存格式、IDEA中文UT方法执行报错问题 背景 1、wps修改文件后,编码格式从UTF-8-bom变成UTF-8(notepad可以查看); 2、IDEA中文UT执行报错: 解决方案 1、语言设置中不要勾选 “Beta版。。。。” 2、cmd中执…

视频传输网安全防护体系

在电脑、手机信息安全保护得到广泛关注和普及的今天,监控摄像头等设备的安全防护仍为大众所忽略,大量视频监控网络的前端设备和数据没有任何保护,完全暴露在互联网中。 前端IP接入设备与后端业务系统处于直连状态,一旦有攻击者或…

iOS开发-UIScrollView嵌套tableView实现顶部tab横向切换

iOS开发-UIScrollView嵌套tableView实现顶部tab横向切换 通过ScollView嵌套两个TableView左右切换功能 一、UIScollView UIScrollView可滚动控件,这里初始化需要设置_backScollView.pagingEnabled YES; 代码如下 _backScollView [[UIScrollView alloc] initWi…

98. Python基础教程:try...except...finally语句

【目录】 文章目录 1. try...except...finally语法介绍2. try...except...finally执行顺序3. 捕获特定类型的异常4. 捕获所有类型的异常5. 实操练习-打开txt文件并输出文件内容 【正文】 在今天的课程中,我们将学习Python中的异常处理语句try...except...finally。 …

自定义MVC增删改查

目录 mymvcdemo是自定义mvc框架的使用示例 1.1 实体类 1.2 dao方法 1.3 写Service / biz 三层架构 1.4 建action 相当于selvert 1.5 con连接MySQL 8.0 版本 1.6 配置文件 XML 1.7 主界面布局 1.8 增加界面布局 1.9 写tld配置文件 2.0 注意架包 我是已经打包好的 mymv…

Redis缓存预热

说明:项目中使用到Redis,正常情况,我们会在用户首次查询数据的同时把该数据按照一定命名规则,存储到Redis中,称为冷启动(如下图),这种方式在一些情况下可能会给数据库带来较大的压力…

C++ 结构体和联合体

1.结构体 结构体是一种特殊形态的类,它和类一样,可以有自己的数据成员和函数成员,可以有自己的构造函数和析构函数,可以控制访问权限,可以继承,支持包含多态,结构体定义的语法和类的定义语法几…

【ChatGPT】ChatGPT是如何训练得到的?

前言 ChatGPT是一种基于语言模型的聊天机器人,它使用了GPT(Generative Pre-trained Transformer)的深度学习架构来生成与用户的对话。GPT是一种使用Transformer编码器和解码器的预训练模型,它已被广泛用于生成自然语言文本的各种…

ubuntu远程控制小车 运行rviz时报错

我买的是wheeltec的小车,测试rgbd相机时想在ubuntu上的rviz中显示小车的姿态和看到的rgb和depth图,但是ubuntu中rostopic list和rviz都找不到小车发布的话题信息,运行rqt_image_view时可以显示图片信息。 最终wheeltec的技术人员lucas帮我找了…

MIT 6.S081 Lab Ten -- mmap

MIT 6.S081 Lab Ten -- mmap 引言mmap(hard)代码解析 引言 本文为 MIT 6.S081 2020 操作系统 实验十解析。 MIT 6.S081课程前置基础参考: 基于RISC-V搭建操作系统系列 mmap(hard) map和munmap系统调用允许UNIX程序对其地址空间进行详细控制。它们可用于在进程之间共享内存&a…

基于springboot+mybatis+vue进销存管理信息系统

基于springbootmybatisvue进销存管理信息系统 一、系统介绍二、功能展示1.个人中心2.企业信息管理3.商品信息管理4.客户信息管理5.入库记录管理6.出库记录管理7.出库记录管理8.操作日志管理9.库存盘点管理 四、获取源码 一、系统介绍 系统主要功能: 普通用户&#…

华为OD机试真题 Java 实现【简单的自动曝光】【2023Q1 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、备注五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明4、再输入5、输出6、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA&#xff…

css中flex后文本溢出的问题

原因: 为了给flex item提供一个合理的默认最小尺寸,flex将flex item的min-width 和 min-height属性设置为了auto flex item的默认设置为: min-width: auto 水平flex布局 min-height:auto 垂直flex布局 解决办法&…

PHP8的变量-PHP8知识详解

昨天我们讲解了PHP8的常量,今天讲解PHP8的变量。常量有定义常量和预定义常量,变量呢?那就没有定义变量了,那叫给变量赋值,但是还是有预定义变量的。下面就给大家讲解什么是变量、变量赋值及使用及预定义变量。 一、什么…

zookeeper基础

安装 https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/ 命令 bin/zkServer.sh start bin/zkServer.sh stop bin/zkServer.sh status bin/zkCli.sh ll / quit 各个配置项的含义: tickTime:每个时钟周期的毫秒数。ZooKeeper使用一个内部…

DevOps系列文章之 java调用python脚本

在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐) 调用python脚本中的函数 简单介绍 官网地址 首页 | (jython.org) Jython项目提供了Java中的Python实现, 为Python提供了…

功能测试也可以发现数据库相关的性能问题

很多同学认为功能测试和性能测试是严格分开的,功能测试人员无法发现性能问题。其实不是这样的,功能测试人员在验证功能时也可以发现性能问题;一些功能反而在功能测试环境不好验证,需要在性能环境上测试。 今天咱们就说一下测试涉及…

【Redis】内存数据库Redis进阶(搭建各种集群)

目录 单机安装Redis搭建Redis主从集群搭建Redis哨兵集群 基于 CentOS 7 的 Redis 集群 单机安装Redis 安装 Redis 所需要的依赖: yum install -y gcc tcl将 Redis 安装包(redis-6.2.4.tar.gz)上传到任意目录 解压缩: tar -xzf …

【数据结构】图文并茂,通过逻辑图带你轻松拿捏链表,实现各种接口功能

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,我们接着之前讲过的顺序表来继续介绍初阶数据结构的内容,今天给大家带来的是有关链表的基本知识和各种接口功能的实现 好了,废话不多说&#x…

【uniapp】实现买定离手小游戏

前言 最近玩了一个小游戏,感觉挺有意思,打算放进我的小程序【自动化小助手】里面,“三张押一张,专押花姑娘!”,从三张卡牌,挑选一张,中奖后将奖励进行发放,并且创建下一…