使用SonarQube和Artifactory进行智能、基于度量的发布管理

SonarQube和Artifactory

发布或构建管理人员必须做出的一些最重要的决策是,是否通过CI管道来提升构建。为了使这些决策明智而合格,需要质量度量来指出构建中的问题。但有时,问题就在源头,为了检测这些问题,您需要SonarQube这样的工具。

SonarQube分析源代码以检测棘手的问题——如bug、代码气味等安全漏洞——这会影响代码质量。还可以将其配置为根据一组质量门指标您定义的阈值,以帮助在构建或部署之前识别可能导致问题的代码。

作为你的二进制repository manager, JFrog Artifactory也是a的关键部分CI / CD管道并且在确保构建和部署的代码的安全性和质量方面发挥核心作用

这篇文章描述了如何将Artifactory和SonarQube配置为在CI/CD管道中一起工作,以便在劣质代码通过管道进入生产环境之前捕获它们。

元数据集成

TSonarQube和Artifactory之间的集成是通过将SonarQube的元数据(比如Quality Gate故障)附加到Artifactory中的构建中来实现的。这些元数据可以进一步向下利用,以帮助决定构建(相应的二进制文件)是否应该被提升和/或在生产中使用。

SonarQube人工集成

SonarQube分析可以添加到CI管道的某个阶段。通常,这将在您的CI服务器(如Jenkins、TravisCI或CircleCI)的配置中完成。

看看这个Git存储库它包括一个shell脚本,称为artifactory-sonar.sh,您的CI服务器可以使用它来调用SonarQube分析,并将其质量度量信息交付给Artifactory。

例如,如果您正在使用Jenkins,您可以添加artifactory-sonar.sh脚本到你的JenkinsFile中的构建后阶段定义:

stage('Post - Build') {sh -c "./artifactory-sonar.sh"}

shell脚本允许Artifactory为Artifactory的SonarQube分析(CeTaskId)捕获计算引擎标识符buildinfo.此标识符提供了对在该构建中生成的SonarQube分析的质量检验关详细信息的访问。发布和构建管理人员可以使用这些信息来决定(或自动化CI管道来决定)是否将构建提升到生产环境。

现在行动还是以后行动——你自己选择

Artifactory/SonarQube集成可以在两种操作模式下使用:等待(阻塞)模式(默认)或NOWAIT(阻塞)模式。

等待模式

等待模式时,集成将等待SonarQube分析完成,然后决定是否使构建失败。

对于构建时间短或构建时间无关紧要的项目,建议使用此模式。

如前所示,这就是您如何将此检查添加到JenkinsFile的Post Build阶段。

stage('Post - Build') {sh -c "./artifactory-sonar.sh"}

如果您想要始终覆盖SonarQube质量度量,以便它不会在构建中失败,请调用带有参数的脚本

stage('Post - Build') {sh -c "./artifactory-sonar.sh false"}

NOWAIT模式

NOWAIT模式时,脚本将不会等待SonarQube分析完成,而只会将分析的计算引擎标识符(CeTaskId)作为Artifactory构建的一部分存储。稍后可以在管道中使用此信息来查询SonarQube,以获取该构建的质量检验关状态。

对于大型项目,建议使用此模式,因为大型项目无法接受让构建等待SonarQube分析。

要以无等待模式调用,请执行:

stage('Post Build') {export WAIT_FOR_ANALYSIS=false;/ artifactory-sonar.sh}。

您可以下载该脚本并将其作为参考,但是,您可能需要根据自己的需要对其进行修改,因为管道和约定因公司而异。

有关实现的更多详细信息可以在自述文件关于项目:

您准备好接受一些SonarQube在Artifactory中的质量门指标了吗?

开始您的Artifactory免费试用