如何将SonarQube集成到DevOps环境中

自动化是软件开发改进的一个关键实践。DevOps(开发运营)是软件开发领域内的一种趋势。DevOps 的定义有很多种。不过,“自动化” 很可能是该定义的一部分。虽然软件开发被自动化,但人的行为对该流程也是有所贡献的。不同团队成员编写的代码各不相同,风格也各异。有些开发人员会省略代码中的注释。Continuous Integration(CI,持续集成)、Continuous Delivery(CD,持续交付)、Continuous Testing(持续测试)都是与 DevOps 相关的词语。因为代码得到了系统的分析,所以可以减少多种编码错误风​​险。这方面的两个最佳实践分别是静态代码检查,以及通过应用程序安全测试来测试代码的漏洞。

本文将介绍如何在持续交付流程中部署一个静态代码检查流程。IBM SmartCloud Continuous Delivery 被用作检查状态源代码的一个示例。不过,本文中所使用的方法也可用于多种流程,比如来自 IBM 的持续集成(如 IBM® Rational Build Forge®)或持续部署(uDeploy)解决方案。

IBM SmartCloud Continuous Delivery 解决方案和 SonarQube

IBM SmartCloud Continuous Delivery 包括 DevOps 的大部分关键实践,并提供了额外的功能,包括工作负载部署器组件,该组件定义了部署模式和对云系统(IBM® PureSystems、IBM® Workload Deployer、IBM SmartCloud® Provisioning 等)的自动部署。有关的更多信息请参阅在文章底部的参考资料部分。

SonarQube 是一个开源项目,用于源代码静态检查。它支持 20 种语言。报告是实时运行的。SonarQube 称此为 Continuous Inspection(持续检查)。

本文中所用术语的定义

因为没有 “持续<流程>” 的标准定义,需要先定义在本文中所使用的术语。

备注:本文中所使用的定义在各出版物中有所不同。

持续交付 (CD) 一个分阶段的自动化流程。它从软件构建开始,完成软件开发的以下这些阶段:打包、自动部署到测试系统、预生产质量保证系统,可能还包括部署到生产系统。自动化系统测试
往往是针对已部署的系统而运行的。   持续集成 (CI) 一个自动化的软件构建和测试过程,通常用于开发测试。持续集成是在每天的基础上(或在开发人员将
新的源代码带入源代码库时)执行的。这个过程与持续交付类似,惟一区别是其主要
重点是软件构建和单元/特性测试,而不是系统测试。 

有些公司可能会每天运行持续交付。如果每天运行持续交付,那么持续集成将被包含在持续交付流程中。

交付管道包括下面列出的步骤,如图 1 所示。

构建 从存储库加载源代码。
然后,运行构建流程。 在这个步骤中,可以运行单元测试工具和代码覆盖工具。也可以运行代码分析。如果有错误,那么交付管道会停止运行。  发布 构建包被存储在库服务器中。库服务器还存储了相关的信息,比如构建的质量状态及所有关联的文档。  部署 应用程序被部署到物理和/或
虚拟主机。如果虚拟主机不可用,那么云接口将会提供虚拟机。  验证 自动测试:运行集成测试(功能测试)、性能测试和安全测试。   生产 如果您选择部署到生产环境中,那么构建被发送到生产系统,以获得利益相关者的反馈。在面向合规性的软件开发项目中,生产步骤可能不会发生。  

备注:本文的重点是代码分析。文章的样例从构建步骤开始,并以验证步骤结束。

图 1. 典型的交付管道流程

解决方案架构

图 2 显示了解决方案架构。IBM SmartCloud Continuous Delivery 解决方案是解决方案架构的基础,如图 2 所示。

图 2. 基于 SmartCloud Continuous Delivery 的解决方案架构

在本例中,Ruby Make (Rake) 被用作交付管道的一个实现。可以根据工程师的需求或事件(如调度程序)来启用 Jazz Build Engine,它会运行交付管道。如果从客户端发出请求,则还会运行 Rake 实用程序。在本文中,是从 IBM® Rational Team Concert 客户端手动调用交付管道流程。

按照以下步骤,在解决方案架构上实现交付管道:

构建。构建步骤是在 Jazz Build Engine 组件上运行的。交付流程从 Rational Team Concert 中的存储库加载源代码。SonarQube 执行静态检查,并最终构建软件。在此阶段,静态检查的结果被存储在 SonarQube 服务器中。 发布。Jazz Build Engine 将构件和基础架构自动化代码发布到 Library Server。 部署。Jazz Build Engine 请求云主机提供测试所需的任何虚拟机。云主机指引虚拟机在
哪里加载构建构件及相关文件,比如设置代码(基础架构自动化代码)。然后,每个虚拟机从库服务器加载软件和基础架构自动化代码。配置它们自己是部署步骤的最后一部分。 测试。无论是否通过系统测试,Jazz Build Server 都对所提供的虚拟机运行系统测试。

时间: 2024-11-10 10:50:11

如何将SonarQube集成到DevOps环境中的相关文章

向DevOps环境过渡?别犯这四种错误

  脆弱的项目管理技能,错过的时间线,敏感的员工--其中的任何一条都可能破坏你羽翼未丰的DevOps环境. DevOps混合了任何由公司应用开发和系统运营团队一起执行的任务.这简单的定义掩盖了向DevOps环境过渡的复杂性.真的,CIO们向DevOps过渡所面临的潜在问题很多.这些地雷所在范围从技术(比如测试环境或架构的错误)到文化(比如高估速度而低估质量),再到管理(没有获得执行官的支持). 这里,我们的专家列出了在向DevOps环境过渡时易犯的四种常见错误,并指出如何避免它们: 错误1:被D

培养和招聘:形成DevOps环境的关键

DevOps不再只是大肆宣传的产物,已经真正成为企业IT的主要任务. 根据RightScale的2016 State of the Cloud调查显示,1060名IT专业人士中约74%回应说,他们已经在企业内实施了DevOps,较2015年的66%有所上升. 根据由Appvance委托Vanson Bourne完成的State of Software Release Efficiency调查,200名决策者中的73%则回应,已经实施了一些DevOps流程. DevOps专业人士身价不菲:Pupp

在非容器环境中实现DevOps

采用DevOps方式实现软件交付的原因之一是为了消除生产部署过程中的瓶颈,对于服务器端软件,通常涉及以下部分: 应用程序环境,如操作系统参数第三方组件,如应用程序服务器,web服务器和数据库顶部运行的应用软件 为了消除部署瓶颈,DevOps旨在打破开发人员和IT运营人员之间的障碍(也是DevOps得名的原因),以促进协作的工作环境.因此,需要确保生产环境与开发环境保持同步,并且所有部署过程一起执行.实现这一目标的方式之一是通过使用容器,如Docker或Kubernetes.事实上,很多人将容器和

在Visual Studio 6.0集成环境中开发设备驱动程序的方法

在Windows上,Windows DDK提供的开发环境是基于命令行的,操作起来极为不便,相信进行过驱动程序开发的朋友一定对此深恶痛绝.另一方面,Visual Studio 6.0却给我们提供了非常友好易用的集成环境,让我们有如虎添翼之感. 那么,能否利用Visual Studio的集成环境来开发驱动程序呢?笔者经过多方探索,并结合自己开发驱动的经验,摸索出了一套实用的方法,通过对Visual Studio集成环境的简单设置,创建了自己的驱动开发集成环境了. 下面笔者的一些经验奉献出来与大家共享

apache24 配置问题-wampserver集成环境中配置虚拟主机总是出现403Forbidden

问题描述 wampserver集成环境中配置虚拟主机总是出现403Forbidden 页面错误提示 Forbidden You don't have permission to access / on this server. Apache/2.4.9 (Win32) PHP/5.5.12 Server at www.myshop.com Port 80 我按照经验修改过的地方: 1.在httpd.conf加载hosts模块 # Virtual hosts Include conf/extra/

让你提前认识软件开发(51):VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改

第3部分 软件研发工作总结 VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改   [文章摘要]         Pclint是一种C/C++软件代码静态分析工具.它是一种更加严格的编译器,能够发现普通编译器所不能发现的代码中的很多问题,因此被广泛应用于软件开发项目中.        本文介绍了如何在VC++集成开发环境中配置Linux下的Pclint工程,给出了C语言中pclint规则A检查的常见错误,并描述了对应的修改办法.   [关键词]          VC++

IBM InfoSphere MDM在复杂环境中提供数据集成流程自动化和可靠的信息

借助 IBM® InfoSphere® MDM Reference Data Management (RDM) 中心,客户可以运用主数据管理 (MDM) 方法管理自身的参考数据.RDM 中心会通过有效的集中创作和审批点来替换遍布多款应用程序的代码表筒仓.同时还会提供一些 MDM 功能,比如治理.流程.安全和审计控制. 和任何初始的 MDM 实现项目一样,人们将大部分精力用于 RDM 中心与现有的应用程序和流程的集成.整个企业 IT 基础架构的应用程序都引用了代码表.为获得主引用数据的优势,RDM

.NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)

Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C#来展现,但是同样适用于其他类似的OO技术平台,这些技术点可能称不上完整的技术,但是它是经验的总结,是掉过多少坑之后的觉醒,所以有必要花几分钟时间记住它,在真实的项目开发中你就知道是多么的有帮助.好了,废话不说了,进入主题. 我们在开发服务时为了调试方便会在本地进行一个基本的模块测试,你也可以认为是集

IT生产环境中容器编排系统的五个最佳做法

本文讲的是IT生产环境中容器编排系统的五个最佳做法[编者的话]本文主要讲述了生产环境中使用容器编排系统需要注意的5个最佳做法. [深入浅出学习 etcd]etcd为分布式系统提供可靠.高效的配置管理服务,在Docker.Kubernetes.Mesos等平台中扮演了越来越重要的角色.作为2013年开始的项目,它还很年轻,官方文档中缺乏实现上全面.系统的介绍,本课程深入浅出地介绍了etcd的实现,并为运维和二次开发提供了系统的指导和建议. 如果您的企业IT运维组织结构已转移到Docker等容器技术