中国sonarqube代理商-苏州华克斯公司
SonarSource交付管道,持续的交付和DevOps是众所周知的和广泛传播的做法现在。人们普遍认为,重要的是组建伟大的团队,首先定义共同的目标,然后选择和整合适合于给定任务的工具。通常,它是一个轻量级工具的混搭,它们集成在一起建立连续的交付管道并支持DevOps的计划。在这个博客文章中,我们放大到了整个管道的一个重要部分,这就是经常被称为连续检查的学科,它包括检查代码并在上面注入一个质量门,并显示在达到质量门后如何上传工件。DevOps的启用工具包括詹金斯、SonarQube和Artifactory。的用例你已经知道质量不能在事后被注入,而是从一开始就应该是过程和产品的一部分。作为一种常用的良好做法,强烈建议您尽快检查代码并使结果可见。因为SonarQube是一个很好的选择。但SonarQube不只是运行在任何孤立的岛屿,它是集成在一个输送管道。作为管道的一部分,代码被检查,并且仅当代码根据定义的要求是好的,换句话说:它满足质量门,被建立的工件被上传到二进制存储库管理器。让我们考虑下面的场景。其中一个繁忙的开发人员必须修复代码,中国sonarqube代理商,并检查对中央版本控制系统的更改。白天很长,晚上很短,而且对所有团队的承诺,开发人员没有检查本地沙箱中代码的质量。幸运的是,有构建引擎詹金斯作为一个单一的真理点,实现交付管道与其本地管道功能,并作为一个方便的巧合SonarQube有支持詹金斯管道。此更改将触发管线的新运行。哦不!生成管线中断,并且未进一步处理更改。在下面的图像中,您会看到已定义的质量门被忽略。可视化是由詹金斯蓝色海洋完成的。01PipelineFailedBlueOceanSonarQube检验潜在的问题是什么?我们可以打开SonarQube的web应用程序并深入查找。在Java代码中,显然没有将字符串文本放在右侧。02发现在团队会议中,决定将其定义为一个阻止程序,并相应地配置SonarQube。此外,建立了一个SonarQube质量门,以打破任何建设,如果一个拦截qi被确定。现在让我们快速查看代码。是的,SonarQube是对的,下面的代码段有问题。03FindingVisualizedInCode我们不希望详细讨论所有使用的工具,也涵盖完整的詹金斯构建工作将超出范围。但有趣的提取这里的检查方面是在詹金斯管道DSL中定义的以下阶段:配置.xml:SonarQube检查阶段(SonarQube分析){withSonarQubeEnv(声纳){mvn组织sonarsource扫描仪.maven:声纳-maven-插件:3.3.0.603:声纳+-f所有/pomxml+-DsonarprojectKey=com.huettermann:全部:主+-Dsonar登录=$SONAR_UN+-Dsonar密码=$SONAR_PW+-Dsonar语言=java+-Dsonar。的+-Dsonar。的+-Dsonar测试.夹杂物=**测试***+-Dsonar.排除/**/**测试***}}用于运行SonarQube分析的阶段。允许选择要与之交互的SonarQube服务器。运行和配置扫描仪,许多可用的选项,请检查文档。许多选项可用于集成和配置SonarQube。请参阅文档中的替代方案。同样适用于其他覆盖的工具。SonarQube质量门作为詹金斯管线阶段的一部分,SonarQube配置为运行和检查代码。但这仅仅是第yi部分,因为我们现在还想添加质量门,以打破构建。下一阶段正好涵盖了这一点,请参阅下一片段。管道被暂停,直到质量门被计算,特别是waitForQualityGate步骤将暂停管道,直到SonarQube分析完成并返回质量门状态。如果遗漏了质量门,则生成将中断。AnsibleSonarQube升级的角色你可能知道,并希望使用SonarQube。这是一个伟大的工具,是积极的发展和改善。这是伟大的,如果你是一个开发使用SonarQube。但是,如果您碰巧管理SonarQube实例,则由于升级指南由11步骤组成,因此不断升级非常麻烦。停止旧的SonarQube服务器并解压新的SonarQube分布在一个新鲜的目录,中国sonarqube代理商,让我们说NEW_SONARQUBE_HOME使用默认的H2数据库启动它,并使用更新中心安装您需要的插件手动安装任何自定义插件停止新服务器更新声纳的内容.属性和包装.配置文件位于NEW_SONARQUBE_HOME/配置目录中,其内容与OLD_SONARQUBE_HOME/配置目录中的相关文件(web服务器URL、数据库设置等)有关。不-粘贴旧文件如果使用了自定义JDBC驱动程序,请将其到NEW_SONARQUBE_HOME/扩展/jdbc驱动程序/备份数据库删除数据/es目录启动新的web服务器http://localhost:9000/setup(用您自己的URL替换localhost:9000)来浏览并按照安装说明进行操作这是一个太多的步骤,手动执行。因此,我决定通过为它编写一个Ansible的角色来实现自动化。初始设置在我开始编写Ansible剧本之前,我需要找到一种方法来测试我的代码。所以我开始与流浪汉旋转了一个虚拟机,并提供了一个简单的脚本。这是需要有类似的环境,以我们的实际SonarQube生产实例。我能够增量地构建我的Ansible剧本并在这个VM上测试它。很快我就明白了,与流浪汉一起工作会减慢我的速度,因为我需要重置环境,而不是的预期。所以我决定考虑泊坞窗。用于测试的泊坞窗我找到了正式的SonarQube泊坞窗图像,但无法使用,因为我们的SonarQube实例安装在CentOS和官fang图像使用不同的基础图像。另外,我需要自定义特定的SonarQube版本我想开始。因此,我创建了我们自己的Dockerfile与CentOS6基地和Ansible安装。此泊坞窗映像不需要启动SonarQube,华北sonarqube代理商,因为我只是想验证是否进行了正确的文件更改,而我的Ansible手册没有错误。升级的第yi步之一就是关闭服务器。我将我的剧本装入容器,并在该容器内运行Ansible,对该本地环境进行了更改。当前脚本的路径TESTS_DIR=$(cd$(dirname${BASH_SOURCE[0]})&&密码#命令测试剧本TEST_COMMAND=cd/行动&&ansible-剧本$@-我本地主机-c升级-声纳database.yml#运行容器安装行动为卷泊坞run-v$TESTS_DIR/.。/行动/:/行动声纳-升级-测试/垃圾/bash-c${TEST_COMMAND}在泊坞窗中运行我的剧本大大减少了反馈回路,所以我决定泊坞窗是走的路。你可以看看我所有的脚本在GitHubAnsible角色我一步一步地往前走,我到达了一个点,一切似乎都在工作,我有一个非常有用的Ansible的角色在我的手中。它尚未发布到AnsibleGalaxy,但您可以在GitHub的SonarQube升级Ansible角色项目下找到源文件和文档。当前Ansible角色通过在当前位置旁边创建新安装来升级SonarQube。这提供了回滚的方法(如果需要)。此时,角色执行以下任务:确保特定的根用户存在于声纳安装在所有安装所在的目录中创建声纳.sh确保SonarQube服务存在停止SonarQube新版本备份数据库和安装插件将自定义配置应用于新实例确保删除数据/es重新SonarQube服务启动新版本开始SonarQube手动步骤这个过程仍然需要几个手动步骤。在运行升级手册之前,应手动确保在升级过程中要安装的插件列表是xin的。您可以从SonarQube的管理视图中获得xin支持的版本号。根据SonarQube的建议,此Ansible角色不仅以前安装的配置,而且使用带有变量的模板来为新实例创建配置。这意味着在执行升级之前,开发人员可以将模板和基本配置与新的SonarQube进行比较。虽然这是一个手动步骤,但与以前的操作相比,它更容易,因为可以使用IDE而不仅仅是从命令行中的diff工具进行比较。这两个步骤都需要后续的手动升级,我认为这些升级准备活动。SonarQube和JaCoCo的个人测试代码覆盖率围绕JaCoCo听众人工制品的一个警告。虽然在文档中不清楚,但是当JaCoCo侦听器版本与SonarQube中安装的Java插件的版本匹配时,似乎获得了jia效果。在这种情况下,由于我们在SonarQube中安装的Java插件是2.3版,我们使用了listenerartefact2.3版本。我们还用监ting器1.2测试了同样好的结果,但为了防止任何未来的冲突,我们建议保持版本一致。运行分析一旦完成了项目配置的更改,您只需要重新执行SonarQube分析即可查看新的报告。根据您安装的SonarQubeJava版本,配置有所不同。在旧版本中运行分析当使用的Java插件版本是2.1或更早的版本时,应该在分析执行时才能启用该配置文件,代理商sonarqube代理商,并且只有当分析执行时。这意味着现在需要发射声纳:声纳目标作为单独的Maven构建(建议这样做,但在许多情况下,您可以在一次运行中执行所有目标)。在我们的宠物诊suo版本的情况下:>mvn清洁验证-P货-tomcat,硒测试,jmeter测试>mvnsonar:声纳-P覆盖率测试如果您的构建是由Jenkins工作触发的,那么新的配置文件应该添加到后期制作操作中,如此屏幕截图中所示:中国sonarqube代理商-苏州华克斯公司由苏州华克斯信息科技有限公司提供。苏州华克斯信息科技有限公司拥有很好的服务与产品,不断地受到新老用户及业内人士的肯定和信任。我们公司是商盟认证会员,点击页面的商盟客服图标,可以直接与我们客服人员对话,愿我们今后的合作愉快!)