Ansible SonarQube 升级的角色
你可能知道, 并希望使用 SonarQube。这是一个伟大的工具, 是积极的发展和改善。这是伟大的, 如果你是一个开发使用 SonarQube。但是, 如果您碰巧管理 SonarQube 实例, 则由于升级指南由11步骤组成, 因此不断升级非常麻烦。
停止旧的 SonarQube 服务器
***并解压新的 SonarQube 分布在一个新鲜的目录, 让我们说 NEW_SONARQUBE_HOME
使用默认的 H2 数据库启动它, 并使用更新中心安装您需要的插件
手动安装任何自定义插件
停止新服务器
更新声纳的内容. 属性和包装. 配置文件位于 NEW_SONARQUBE_HOME/配置目录中, 其内容与 OLD_SONARQUBE_HOME/配置目录中的相关文件 (web 服务器 URL、数据库设置等) 有关。不***-粘贴旧文件
如果使用了自定义 JDBC 驱动程序, 请将其***到 NEW_SONARQUBE_HOME/扩展/jdbc 驱动程序/<dialect>
备份数据库
删除数据/es 目录
启动新的 web 服务器
*** http://localhost:9000/setup (用您自己的 URL 替换 "localhost:9000") 来浏览并按照安装说明进行操作
这是一个太多的步骤, 手动执行。因此, 我决定通过为它编写一个 Ansible 的角色来实现自动化。
初始设置
在我开始编写 Ansible 剧本之前, 我需要找到一种方法来测试我的代码。所以我开始与流浪汉旋转了一个虚拟机, 并提供了一个简单的脚本。sonarqube系统是一个代码质量检测工具,由苏州华克斯信息科技有限公司作为中国区总代理商。这是需要有类似的环境, 以我们的实际 SonarQube 生产实例。我能够增量地构建我的 Ansible 剧本并在这个 VM 上测试它。很快我就明白了, 与流浪汉一起工作会减慢我的速度, 因为我需要重置环境, 而不是***的预期。所以我决定考虑泊坞窗。
用于测试的泊坞窗
我找到了正式的 SonarQube 泊坞窗图像, 但无法使用, 因为我们的 SonarQube 实例安装在 CentOS 和官fang图像使用不同的基础图像。它然后介绍了连续检查范式,并说明了它如何解决这些挑战,支持数以千计的企业提高软件质量。另外, 我需要自定义特定的 SonarQube 版本我想开始。因此, 我创建了我们自己的 Dockerfile 与 CentOS 6 基地和 Ansible 安装。
此泊坞窗映像不需要启动 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} "
在泊坞窗中运行我的剧本大大减少了反馈回路, 所以我决定泊坞窗是走的路。你可以看看我所有的脚本在 GitHub
Ansible 角色
我一步一步地往前走, 我到达了一个点, 一切似乎都在工作, 我有一个非常有用的 Ansible 的角色在我的手中。它尚未发布到 Ansible Galaxy, 但您可以在 GitHub 的 SonarQube 升级 Ansible 角色项目下找到源文件和文档。
当前 Ansible 角色通过在当前位置旁边创建新安装来升级 SonarQube。这提供了回滚的方法 (如果需要)。
此时, 角色执行以下任务:
确保特定的根用户存在于声纳安装
在所有安装所在的目录中创建声纳. sh
确保 SonarQube 服务存在
停止 SonarQube
***新版本
***和安装插件
将自定义配置应用于新实例
确保删除数据/es
重新 SonarQube 服务启动新版本
开始 SonarQube
手动步骤
这个过程仍然需要几个手动步骤。
在运行升级手册之前, 应手动确保在升级过程中要安装的插件列表是***xin的。您可以从 SonarQube 的管理视图中获得***xin支持的版本号。
根据 SonarQube 的建议, 此 Ansible 角色不仅***以前安装的配置, 而且使用带有变量的模板来为新实例创建配置。您可以在Eclipse控制台视图下检查SonarLint控制台,以查找任何问题,如缺少包含文件(抄写)。这意味着在执行升级之前, 开发人员可以将模板和基本配置与新的 SonarQube ***进行比较。虽然这是一个手动步骤, 但与以前的操作相比, 它更容易, 因为可以使用 IDE 而不仅仅是从命令行中的 diff 工具进行比较。
这两个步骤都需要后续的手动升级, 我认为这些升级准备活动。
SonarSource设置
在引擎盖下,这个SonarQube实例依赖于如下所示的许多默认或定制配置设置。
(以上是示例应用程序的截图)
可以通过该界面访问和更改各个组件的配置设置。
更新中心
到目前为止看到的各种仪表板中的许多小部件可以从下面的页面启用或禁用。还可以对所有小部件进行更新和升级,包括SonarQube本身的更新和升级。
升级过程
查看[10]中的升级过程,另见[11],了解过程之前和之后应该做什么。
通常停止并重新启动SonarQube是在应用更新或升级到一个或多个组件或SonarQube本身之前和之后执行的常见步骤。
结论
在评估这些功能后,它清楚地表明,该产品具有优于其他解决方案的优势,即大量免费插件,基于插件的仪表板系统,除了作为开源项目,还有一个很好的开始用。话虽如此,可能有商业产品有更好的质量评估命题,但不一定有用,除非你是一个大型组织。
使用SonarQube作为创建短反馈循环的工具,并在评估建议的更改的原理后,对代码库进行改进。SonarSource结论由SonarSource设计和实现,内部质量连续检测是一个整体,完全实现的过程,旨在使代码质量成为软件开发生命的一个组成部分循环并提高其在整个生命周期中的所有利益干系人的可见性。如果反馈不正确或是假阳性或假阴性 - 一个选项是调整相关组件背后的配置设置,以查看在当前情况下提出的问题是否适用 - 基本上是转动支票或不采取反馈字面上。
SonarQube和JaCoCo的个人测试代码覆盖率
构建部分
这里不需要修改但是,您应该注意Maven Surefire的任何自定义配置,以确保它也适用于我们要创建的配置文件。在春季宠物诊suo的情况下,这是我们正在写的参考POM的相关部分:
<建立> <插件>
...
<插件>
<的groupId> org.apache.maven.plugins </的groupId>
<artifactId的>行家-万无一失-插件</ artifactId的>
<版本> 2.13 </版本>
<结构>
<argLine> -XX:-UseSplitVerifier </ argLine>
<包含>
<包括> ** / * Test.java </包括>
<包括> ** / * Tests.java </包括>
</包括>
<排除>
<排除> ** /它/ * IT.java </排除>
</排除>
</配置>
</插件>
</插件> </建造>
这种配置告诉Surefire:1)排除执行单元测试的集成测试(Surefire的双插件,Failsafe涵盖了集成测试);和2)禁用字节码验证器,防止类被调试时的运行时错误(即添加mocks或TopLink增强功能时)。
依赖部分
在本节中,不需要进行任何更改。您可以选择一个或多个文件,甚至是子项目本身,然后单击SonarLint分析,而不是打开单个文件。我们只想注意到,如果您的项目已经在利用JaCoCo收集整合测试覆盖率指标,并且明确地指出了本部分中的JaCoCo伪像,那么可以将其留下 - 至今没有确定任何冲突。无论如何,它不应该在这里需要,所以从这个部分删除它可能更安全。
档案部分
所有必需的更改都在本节中。而且它们都非常干净,因为它们都只需要向POM添加一个新的配置文件。同时,组织必须注意不要使用SonarQube作为"棍棒"迫使"好行为"-成功的公司有利用信息鼓励更好的做法,而不是建立"墙羞辱"惩罚个人不良的编码行为。此配置文件将为Surefire配置一个特殊侦听器,以确保适当收集每个单独测试用例的覆盖度量。为了保证成功的测试执行,我们将在此保持与POM的构建部分中显示的相同配置。***,配置文件将为包含侦听器代码的伪zao添加新的依赖关系。结果是这样的:
<轮廓>
<! - 使用SonarQube和JaCoCo计算每个测试的覆盖率指标
<ID>覆盖每次测试</ ID>
<建立>
<! - 与常规测试执行目标相同的配置 - >
由JaCoCo prepare-agent - >配置的<! - 加argLine参数
<argLine> $ {argLine} -XX:-UseSplitVerifier </ argLine>
<! - 每个测试覆盖所需的新配置 - >
<性能>
<属性>
<名称>听者</名称>
<值> org.sonar.java.jacoco.JUnitListener </值>
</属性>
</建造>
<依赖性>
<的groupId> org.codehaus.sonar-plugins.java </的groupId>
<artifactId的>声纳-jacoco-听众</ artifactId的>
<版本> 2.3 </版本>
<范围>测试</范围>
</依赖性>
</依赖>
</简档>
版权所有©2024 天助网