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

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有个强大的功能,可以修改发送到服务器的数据包,但是修改前需要拦截,即设置断点。设置断点后,开始拦截接下来所有网页,直到取消断点。这个功能可以在数据包发送之前,修改请求参数&#xff1b…...

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,因为在此系统上禁止运行脚本。有关详细信息&#xff0c…...

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邻近算法(自定义数据集训练及测试)

定义&#xff1a; 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别&#xff0c;则该样本也属于这个类别。简单的说就是根据你的“邻居”来推断出你的类别。 用个成语就是物以类聚 思想&#xff1a; 如果一个样本在特征空间中的K个最…...

github使用笔记及git协作常用命令

1.Github有一个主库,每个人自己也有一个库,称为分支。 2.Github的协作流程:先从主库fork出自己的分支, 然后进行代码的修改等操作, 操作完之后从本地库上推到自己的服务器分支,然后 服务器分支Pull Request到 主库。 3.本地仓库由git维护的三棵“树"组成:第1个…...

iOS - Apple开发者账户添加新测试设备

获取UUID 首先将设备连接XCode&#xff0c;打开Window -> Devices and Simulators&#xff0c;通过下方位置查看 之后登录(苹果开发者网站)[https://developer.apple.com/account/] &#xff0c;点击设备 点击加号添加新设备 填写信息之后点击Continue&#xff0c;并一路继续…...

vue 前端 邮箱、密码、手机号码等输入验证规则

最近在写前端表单验证的时候&#xff0c;发现一篇文章质量很好&#xff0c;所以写下这篇文章记录 原文章链接&#xff1a;vue 邮箱、密码、手机号码等输入验证规则 1.手机号 const checkPhone (rule, value, callback) > {const phoneReg /^1[34578]\d{9}$$/;if (!value…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral&#xff08;热门工具 Ruff 的开发者&#xff09;推出的下一代高性能 Python 包管理器和构建工具&#xff0c;用 Rust 编写。它旨在解决传统工具&#xff08;如 pip、virtualenv、pip-tools&#xff09;的性能瓶颈&#xff0c;同时…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

初级程序员入门指南

初级程序员入门指南 在数字化浪潮中&#xff0c;编程已然成为极具价值的技能。对于渴望踏入程序员行列的新手而言&#xff0c;明晰入门路径与必备知识是开启征程的关键。本文将为初级程序员提供全面的入门指引。 一、明确学习方向 &#xff08;一&#xff09;编程语言抉择 编…...