DevOps实践:在GitLab CI/CD中集成静态分析Helix QAC的工作原理与优势

news2024/10/25 5:26:36

基于云的GitLab CI/CD平台使开发团队能够简化其CI/CD流程,并加速软件开发生命周期(SDLC)。

将严格的、基于合规性的静态分析(如Helix QAC所提供)作为新阶段添加到现有的GitLab CI/CD流程中,将进一步增强SDLC,并将您的DevOps工作流从持续集成推进到持续合规。

GitLab用户为何应在CI/CD工作流中使用Helix QAC

GitLab是一个由AI驱动的DevSecOps平台,为Wiki、问题跟踪和CI/CD流程功能提供Git存储库管理器。它由GitLab公司开发,并于2011年发布。

GitLab CI/CD(与CI/CD流程定义和工作流相关的组件)被全球软件开发团队用于许多不同的软件项目,并且越来越多地应用于各种嵌入式行业,包括航空航天、国防、汽车、医疗设备和工业自动化。

GitLab CI/CD 深受开发人员欢迎,因为它整合了开发人员的工作流程,缩短了开发周期,降低了工程风险,帮助确保应用程序更加安全,并打通了孤岛和阶段之间的壁垒。现在,许多开发团队也希望将Helix QAC之类的静态分析工具添加到GitLab中,为其CI流程增加自动化、深入的程序间分析,以确保标准合规。

Helix QAC如何与GitLab相辅相成

Helix QAC是一款静态代码分析工具,可严格准确地遵守监管严格和安全关键型行业的编码标准。

对于使用GitLab CI/CD来简化工作流并缩短DevOps周期的嵌入式开发团队,可以从GitLab与Helix QAC的结合使用中获益。Helix QAC可以在开发过程的早期识别错误、代码质量问题、合规性故障和标准偏差,同时还能轻松地进行更改,从而帮助团队实现开发左移。

与许多静态分析工具不同,Helix QAC的深度和高精度分析引擎,很少或几乎不会返回误报和漏报结果,因此,开发人员无需浪费时间去调查误报,而可以信赖这些分析结果,从一开始就确保代码安全、可靠且易于维护。

最新版本的Helix QAC更新改进了现有的Delta分析功能,通过CI-builds实现了与Perforce Validate平台的完整CI/CD集成。其对CI构建的支持,可以扩展到在基于云的CI流程中运行的分析作业、容器化构建任务,以及通过内置Web API集成到不同的CI/CD平台(如Gitlab)。

将GitLab与Helix QAC结合使用

将GitLab等CI平台与Helix QAC结合使用,可为开发人员提供一个集中化和标准化的工作基础,通过脚本和命令行工具帮助实现CI自动化。

有多种方法可以将Helix QAC静态分析工具与GitLab(或类似环境)等CI系统相集成,因为Helix QAC提供了一个命令行界面(CLI)和灵活的工具,以适应大多数工作流程和各种配置。

例如,Helix QAC可以集成到DevOps工作流程中,作为合并请求自动测试的一部分。这意味着,当开发人员认为其功能已完成并准备合并时,GitLab将运行分析,并反馈是否发现问题,而无需任何额外输入。这样,开发人员就可以执行质量门,如果Helix QAC确实发现了功能分支引入的新问题,则强制进行审查;反之,则确认功能分支没有向主分支引入任何新问题,从而简化整个合并请求流程。

Helix QAC的CI和灵活分析功能可帮助团队管理结果,并识别相较于上一次完整分析的新更改所引入的潜在缺陷。此外,开发人员可以更快地就错误或更改进行沟通,而无需等待夜间构建,另外还可以通过Validate平台访问整个组织的结果和其他数据。

这些Helix QAC功能可在GitLab流程中自动执行测试,为多个并发流程构建质量门,以确保代码的质量、安全性和编码标准的合规性。

GitLab和Helix QAC集成的工作原理

以下视频是GitLab和Helix QAC集成演示,欢迎点击观看↓

GitLab和Helix QAC集成演示

演示示例展示了开发人员打开合并请求,启动包含Helix QAC分析的CI流程的过程,该分析配置为在被合并的分支和它要合并到的项目之间执行Delta分析。在这种情况下,由于添加了新问题,GitLab提示流程失败,并提供了一个链接,供开发人员或审查员在Validate中查看这些问题。

在开发项目时,您的CI流程可以在关键步骤(如合并请求或主分支更新时)自动运行系统化的Helix QAC静态分析。

对主分支进行定期的Helix QAC分析至关重要,它能够确保其他分支与之比较的基线始终是最新的。主分支上的变更应该始终通过合并请求获得批准,因此在添加新问题时,不应该出现失败状态。

示例流程:

qac integration analysis:
	stage: test
	only:
		-master
	script:
		-make clean
		-rm -rf
		  pqra 
		  pqraproject.xml
		  -$HELIX_QACLI_PATH validate config -c -P . -U $VALIDATE_URL -b
$VALIDATE_PROJECT
	-$HELIX_QACLI_PATH sync -P . -t INJECT -g --make
	-$HELIX_QACLI_PATH validate build -P .
  • qacli validate config 命令可确保分析配置与Validate中的配置完全相同,从而在开发周期的各个阶段正确执行项目的标准和要求。
  • qacli sync 命令可确保分析所有项目文件,以防在两次提交之间添加或删除了某些文件。
  • qacli validate build 命令按配置运行分析,并将结果作为新的构建文件上传到Validate。
  • 运行合并请求的流程时,添加新问题时的反馈至关重要,因此流程也有所不同:
qac_MR
  stage: test
  only:
     -merge_requests
  script: 
   -make clean
   -rm -rf
     pqra
     pqraproject.xml
    -$HELIX_QACLI_PATH validate config -c -P . -U $VALIDATE_URL -b
$VALIDATE_PROJECT
    -$HELIX_QACLI_PATH sync -P . -t INJECT -g -- make
    -$HELIX_QACLI_PATH validate cibuild -P . -b
$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME-$CI_JOB_ID | tee file.txt
  after_script:
   - >
      if[$CI_JOB_STATUS == 'success']; then
         echo "no issued found !"
       else
         grep http://file.txt> out.txt
         glab mr note $CI_MERGE_REQUEST_IID --unique --message $(cat out.txt)
       fi

该脚本与主分支的脚本非常相似,但不同之处在于现在使用了qacli validate cibuild命令。这个新命令会分析项目,更重要的是,与主分支相比,如果要添加新的问题,它会通过delta分析进行检查。然后,结果将作为特定的 ci-build 上传到Validate,如果发现新问题,任务就会失败。after_script 用于自动向合并请求添加注释,并在Validate Web界面中提供带有ci-build 结果的链接。

ci-build 是Helix QAC 2024.2版本的旗舰功能,它基于现有的delta分析进行构建,可通过以下方式简化问题报告:

  • 如果添加了新问题,可提供即时反馈,这种情况下,系统设为simply fail 即可。
  • 可直接在Validate Web界面中查看问题,避免通过来回操作、在本地重新运行分析来检查任何新问题。
  • 被标记为偏差的问题(如ignore status)可以通过默认的质量门,从而使上述问题和流程能够顺利进行。

在此演示中,ci-builds 命令显示,合并请求中提出的所有问题都需要修复或正确偏离,才能通过CI检查。这样就能确保主分支中的所有问题都已被接受、已知并记录在案。

在 Web消息浏览器中,您可以看到所有问题并确定到底发生了什么。就像Validate中的任何其他问题一样,您可以为其分配负责人、指定状态并输入注释。在这种情况下,您应该设置一个状态来修复它,或者要求提交合并请求的开发人员修复此代码。

如果合并请求通过,或者开发人员修复了代码,您看到的问题就会越来越少,或者剩下的问题可以忽略不计。

更进一步来说,虽然此演示示例展示的是一个基本流程,但它还可以扩展更多的功能。例如,Validate有一个应用程序接口(API),可用于以各种方式增强集成,如:

  • 让合并请求中出现的注释包含更多信息,说明引入了多少问题,严重程度如何。
  • 发现新问题时,自动应用已知的系统偏差和抑制。
  • 使用自定义质量门来识别任务是否成功,而不是依赖默认的 ci-build 返回代码。

Helix QAC中CI构建功能的灵活性使开发人员能够根据需求自定义流程。

开始使用GitLab和Helix QAC

Helix QAC是一款理想的静态分析工具,可帮助基于GitLab CI/CD运行的CI/CD流程严格执行编码标准,确保功能安全合规性。Helix QAC CI/CD集成可自动执行分析,并确保开发团队拥有安全可靠的代码、一致的样式和更易于维护的代码库。

立即开始使用Gitlab和Helix QAC,优化您的DevOps合规流程。

获取更多产品支持,请咨询Perforce中国授权合作伙伴——龙智:
🌐 官网:www.shdsd.com
📞 电话:400-666-7732
📮 邮箱:marketing@shdsd.com

来源:https://bit.ly/4eLlivz
作者:Pierre-Edouard Lepere,Perforce静态分析工具销售工程师

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

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

相关文章

华为云购买弹性云服务器(教程)

配置弹性云服务器 基础配置 实例 操作系统

1.CentOS安装

CentOS安装 新建虚拟机 选择安装方式 指定镜像方式 选择操作系统类型 设置虚拟机名称和位置 指定磁盘大小 点击“自定义硬件” 指定内存大小 指定镜像位置 点击“开启此虚拟机” 选择“Install CentOS 7”并回车 选择语言 选择安装“GNOME桌面”环境 配置安装位置 配置网络和…

排序05 排序模型的特征

特征介绍: id embedding,通常用32或64维向量 特征处理 线上服务的系统架构 统计数据是有时效性的,不能缓存在服务器本地。画像可以,保证读取快就好。 tf serving 这里 tensorflow会给笔记打分,分数返回给排序服务器&…

本地docker部署中间件和应用

Docker Desktop搭建 安装完成之后使用docker下载镜像,报以下错误: 解决办法: Docker Engine配置能访问的镜像地址: {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled…

搭建 mongodb 副本集,很详细

搭建 mongodb 副本集,很详细 一、前言二、创建用户1、创建 root 用户2、创建测试用户3、修改用户密码 三、修改配置文件(主节点)1、开启登录认证2、加上副本集3、最终配置文件 四、副本节点1、创建副本节点目录2、编辑配置文件3、启动副本节点…

【python实操】python小程序之参数化以及Assert(断言)

引言 python小程序之参数化以及Assert(断言) 文章目录 引言一、参数化2.1 题目2.2 代码2.3 代码解释 二、Assert(断言)2.1 概念2.1.1 Assert语句的基本语法:2.1.2 基本断言2.1.3 断言函数参数2.1.4 断言前后状态一致 2…

网页HTML编写练习:华语榜中榜

网页效果 HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice…

NLP--一起学习Word Vector【实践】

纸上得来终觉浅&#xff0c;绝知此事要躬行。 《冬夜读书示子聿》 值此1024的程序员节&#xff0c;我们一起学习 Word Vector。 本章一起学习文本向量化&#xff0c;掌握文本向量的相关概念&#xff0c;了解各个文本向量&#xff0c;实现文本向量的算法 我开启了一个NLP共学坊…

arm ubuntu22.04 安装es7.16.2

1、更新软件包 sudo apt update && sudo apt upgrade -y 2、安装jdk11 sudo apt install openjdk-11-jdk -y 安装查看版本 java -version 输出应该是这样的 openjdk version "11.0.11" 2021-04-20 OpenJDK Runtime Environment (build 11.0.119-Ub…

【主机漏洞扫描常见修复方案】:Tomcat安全(机房对外Web服务扫描)

文章目录 引言I SSL/TLS Not ImplementedTomcat 服务器 SSL 证书安装部署(JKS 格式)Tomcat 服务器 SSL 证书安装部署(PFX 格式)HTTP 自动跳转 HTTPS 的安全配置(可选)修复SSL证书版本低II 主机漏洞扫描常见修复方案Apache JServ protocol serviceSlow HTTP DEnial of Ser…

Ubuntu 上安装 Redmine 5.1 指南

文章目录 官网安装文档&#xff1a;命令步骤相关介绍GemRubyRailsBundler 安装 Redmine更新系统包列表和软件包&#xff1a;安装必要的依赖&#xff1a;安装 Ruby&#xff1a;安装 bundler下载 Redmine 源代码&#xff1a;安装 MySQL配置 Redmine 的数据库配置文件&#xff1a;…

54万字WORD电力数字化转型智慧电力一体化监管云平台整体解决方案

▲关注智慧方案文库&#xff0c;学习9000多份最新解决方案&#xff0c;其中 PPT、WORD超过7000多份 &#xff0c;覆盖智慧城市多数领域的深度知识社区&#xff0c;稳定更新4年&#xff0c;日积月累&#xff0c;更懂行业需求。 1459页54万字WORD丨电力行业数字化转型 智慧电力…

【ArcGIS Pro实操第4期】绘制三维地图

【ArcGIS Pro实操第4期】绘制三维地图 ArcGIS Pro绘制三维地图-以DEM高程为例参考 如何使用ArcGIS Pro将栅格数据用三维的形式进行表达&#xff1f;在ArcGIS里可以使用ArcScene来实现&#xff0c;ArcGIS Pro实现原理跟ArcScene一致。由于Esri未来将不再对ArcGIS更新&#xff0c…

53页 PPT煤炭行业数字化转型规划方案

▲关注智慧方案文库&#xff0c;学习9000多份最新解决方案&#xff0c;其中 PPT、WORD超过7000多份 &#xff0c;覆盖智慧城市多数领域的深度知识社区&#xff0c;稳定更新4年&#xff0c;日积月累&#xff0c;更懂行业需求。 53页 PPT煤炭行业数字化转型规划方案 通过对煤企高…

手机玩使命召唤21:黑色行动6?GameViewer远程玩使命召唤教程

使命召唤21&#xff1a;黑色行动 6这个第一人称射击游戏&#xff0c;将于10月25号上线&#xff01;如果你是使命召唤的老玩家&#xff0c;是不是也在期待这部新作&#xff1f;其实这个游戏不仅可以用电脑玩&#xff0c;还可以用手机玩&#xff0c;使用网易GameViewer远程就能让…

【Qt6聊天室项目】 主界面功能实现

1. 获取当前用户的个人信息 1.1 前后端逻辑分析&#xff08;主界面功能&#xff09; 主界面上所有的前后端交互逻辑相同&#xff0c;分析到加载会话列表后其余功能仅实现。 核心逻辑总结 异步请求-响应模型 客户端发起请求&#xff0c;向服务器发送包含会话ID的请求服务端处…

python画图|曲线动态输出

【1】引言 前序教程中的曲线动态输出&#xff0c;其实是把曲线按照左右移动的形式输出&#xff08;波的传递形式&#xff09;。 python画图|曲线动态输出基础教程_python 动态曲线-CSDN博客 但有些时候我们更期待的是曲线不移动&#xff0c;随着自变量的增加而输出因变量&am…

信号与系统学习:傅里叶级数

一、基本概念 1. 什么是傅里叶级数&#xff1f; 傅里叶级数是一种数学工具&#xff0c;可以将一个周期函数分解为一系列正弦和余弦函数&#xff08;即三角函数&#xff09;的和。这些正弦和余弦函数的频率是原函数的整数倍。 2. 为什么要使用傅里叶级数&#xff1f; 信号分…

【STM32+HAL】OV2640捕获图像显示

一、准备工作 有关CUBEMX的初始化配置&#xff0c;参见我的另一篇blog&#xff1a;【STM32HAL】CUBEMX初始化配置 二、所用工具 1、芯片&#xff1a; STM32F407ZGT6 2、IDE&#xff1a; MDK-Keil软件 3、库文件&#xff1a;STM32F4xxHAL库 三、实现功能 通过OV2640捕获图像…

Flutter UI组件库(JUI)

Flutter UI组件库 (JUI) 介绍 您是否正在寻找一种方法来简化Flutter开发过程&#xff0c;并创建美观、一致的用户界面&#xff1f;您的搜索到此为止&#xff01;我们的Flutter UI组件库&#xff08;JUI&#xff09;提供了广泛的预构建、可自定义组件&#xff0c;帮助您快速构建…