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自带邮件插件进行告知,通知测试结果。

▲邮件接收测试结果
相关文章:
SkyEye与Jenkins的DevOps持续集成解决方案
在技术飞速发展的当下,随着各行各业的软件逻辑复杂程度提升带来的需求变更,传统测试已无法满足与之相对应的一系列测试任务,有必要引入一个自动化、可持续集成构建的DevOps平台来解决此类问题。本文将主要介绍SkyEye与Jenkins的持续集成解决方…...
HCIE Security——防火墙互联技术
目录 一、防火墙接口互联接口 1.防火墙支持的接口及板卡 2.物理链接线缆 3.支持接口种类 (1)物理接口 (2)逻辑接口 二、相关配置命令 1.配置三层接口IP地址 2.配置PPPOE拨号接口 3.配置VLANIF接口、子接口、回环接口 4…...
Rust- 闭包
A closure in Rust is an anonymous function you can save in a variable or pass as an argument to another function. You can create the closure using a lightweight syntax and access variables from the scope in which it’s defined. Here’s an example of a clo…...
【数据挖掘torch】 基于LSTM电力系统负荷预测分析(Python代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
「JVM」性能调优工具
「JVM」性能调优工具 一、jcmd1、jcmd 能干嘛?2、与JVM相关的命令3、示例 二、jmap1、jmap有什么用?2、jmap的命令大全3、示例 三、jps1、jps有什么用?2、jps命令以及示例 四、jstat1、jstat有什么用?2、jstat命令以及示例 五、js…...
IDEA Debug小技巧 添加减少所查看变量、查看不同线程
问题 IDEA的Debug肯定都用过。它下面显示的变量,有什么门道?可以增加变量、查看线程吗? 答案是:可以。 演示代码 代码如下: package cn.itcast.attempt.threadAttempt.attempt2;public class Test {public static …...
基于SpringBoot+Vue的车辆充电桩管理系统设计与实现(源码+LW+部署文档等)
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...
Bean的加载方式
目录 1. 基于XML配置文件 2. 基于XML注解方式声明bean 自定义bean 第三方bean 3.注解方式声明配置类 扩展1,FactoryBean 扩展2,加载配置类并加载配置文件(系统迁移) 扩展3,proxyBeanMethodstrue的使用 4. 使用Import注解导入要注入的bean…...
《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(13)-Fiddler请求和响应断点调试
1.简介 Fiddler有个强大的功能,可以修改发送到服务器的数据包,但是修改前需要拦截,即设置断点。设置断点后,开始拦截接下来所有网页,直到取消断点。这个功能可以在数据包发送之前,修改请求参数;…...
Android 13(T) - Media框架(1)- 总览
从事Android Media开发工作三年有余,刚从萌新变成菜鸟,一路上跌跌撞撞学习,看了很多零零碎碎的知识,为了加深对Android Media框架的理解,决定在这里记录下学习过程中想到的一些问题以及一些思考,也希望对初…...
简述vue3(ts)+antdesignvue项目框架搭建基本步骤
目录 项目简介 概念 过程简述 基本步骤 1.创建新项目 2.安装Ant Design Vue 3.配置Ant Design Vue 4.创建页面和组件 5.使用组件 6.运行项目 项目简介 概念 Vue 3(使用TypeScript)和Ant Design Vue项目框架搭建是指在Vue 3框架下,…...
webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1
webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1 1.问题2. 解决办法: 1.问题 使用webpack打包是报错如下: webpack : 无法加载文件 C:\Program Files\nodejs\webpack.ps1,因为在此系统上禁止运行脚本。有关详细信息,…...
GDAL OGR C++ API 学习之路 (5)OGRLayer篇 代码示例
GetStyleTable virtual OGRStyleTable *GetStyleTable () 返回图层样式表 返回: 指向不应由调用方修改或释放的样式表的指针 // 假设图层对象为 poLayer OGRStyleTable* poStyleTable poLayer->GetStyleTable(); if (poStyleTable ! nullptr) {// 处理样式表信息// ..…...
NIDEC COMPONENTS尼得科科宝滑动型DIP开关各系列介绍
今天AMEYA360对尼得科科宝电子滑动型DIP开关各系列参数进行详细介绍,方便大家选择适合自己的型号。 系列一、滑动型DIP开关 CVS 针脚数:1, 2, 3, 4, 8 安装类型:表面贴装,通孔 可水洗:无 端子类型:PC引脚(只…...
一起学算法(滑动窗口篇)
前言: 对于滑动窗口,有长度固定的窗口,也有长度可变的窗口,一般是基于数组进行求解,对于一个数组中两个相邻的窗口,势必会有一大部分重叠,这部分重叠的内容是不需要重复计算的,所以我…...
HTML <q> 标签
实例 标记短的引用: <q>Here is a short quotation here is a short quotation</q>浏览器支持 元素ChromeIEFirefoxSafariOpera<q>YesYesYesYesYes所有浏览器都支持 <q> 标签。 定义和用法 <q> 标签定义短的引用。 浏览器经常在引用的内容…...
机器学习02-再识K邻近算法(自定义数据集训练及测试)
定义: 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。简单的说就是根据你的“邻居”来推断出你的类别。 用个成语就是物以类聚 思想: 如果一个样本在特征空间中的K个最…...
github使用笔记及git协作常用命令
1.Github有一个主库,每个人自己也有一个库,称为分支。 2.Github的协作流程:先从主库fork出自己的分支, 然后进行代码的修改等操作, 操作完之后从本地库上推到自己的服务器分支,然后 服务器分支Pull Request到 主库。 3.本地仓库由git维护的三棵“树"组成:第1个…...
iOS - Apple开发者账户添加新测试设备
获取UUID 首先将设备连接XCode,打开Window -> Devices and Simulators,通过下方位置查看 之后登录(苹果开发者网站)[https://developer.apple.com/account/] ,点击设备 点击加号添加新设备 填写信息之后点击Continue,并一路继续…...
vue 前端 邮箱、密码、手机号码等输入验证规则
最近在写前端表单验证的时候,发现一篇文章质量很好,所以写下这篇文章记录 原文章链接:vue 邮箱、密码、手机号码等输入验证规则 1.手机号 const checkPhone (rule, value, callback) > {const phoneReg /^1[34578]\d{9}$$/;if (!value…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
【Java多线程从青铜到王者】单例设计模式(八)
wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒…...
