在升级之前,它有助于了解 SonarQube 版本号的工作原理。 版本号最多由三位数字组成,每个数字代表发布周期的一部分:
跨多个非 LTS 版本的升级是自动处理的。 但是,如果您的迁移路径中有一个或多个 LTS 版本,您必须先迁移到每个中间 LTS,然后再迁移到目标版本,如下面的示例 3 所示。
如果您从 LTS 的早期补丁版本迁移,您可以直接升级到下一个 LTS。 您不需要安装任何中间补丁版本。
迁移路径示例:
示例 1 – 从 7.1 > 8.1,迁移路径为 7.1 > 7.9.6 LTS > 8.1
示例 2 – 从 8.2 > 8.9 LTS,迁移路径是 8.2 > 最新的 8.9 LTS 补丁。
示例 3 – 从 6.7.7 LTS > 8.9 LTS,迁移路径为 6.7.7 LTS > 7.9.6 LTS > 最新的 8.9 LTS 补丁。
这是跨版本 SonarQube 升级的通用指南。 仔细阅读目标版本和任何中间版本的版本升级说明。
在开始之前,请备份您的 SonarQube 数据库。 升级问题很少见,但如果发生任何事情,您将需要备份。
在升级过程中,可能会复制表以加快迁移过程,这可能会导致数据库磁盘使用量翻倍。 因此,在开始迁移之前,我们建议您的数据库磁盘使用率低于 50%。
如果您使用 Oracle 数据库升级或使用其他插件,您可以重复使用以前版本的扩展卷以避免移动插件或驱动程序。 使用兼容性矩阵确保您的插件与您的版本兼容。 默认情况下,无需插件即可分析您的版本提供的所有语言。
要使用 Docker 映像升级 SonarQube:
1.Stop and remove the existing SonarQube container (a restart from the UI is not enough as the environment variables are only evaluated during the first run, not during a restart):
$ docker stop <container_id>
$ docker rm <container_id>
2.Run docker:
$> docker run -d --name sonarqube \
-p 9000:9000 \
-e SONAR_JDBC_URL=... \
-e SONAR_JDBC_USERNAME=... \
-e SONAR_JDBC_PASSWORD=... \
-v sonarqube_data:/opt/sonarqube/data \
-v sonarqube_extensions:/opt/sonarqube/extensions \
-v sonarqube_logs:/opt/sonarqube/logs \
<image_name>
3.Reanalyze your projects to get fresh data.
不需要特定的 Docker 操作,只需使用新标签即可。
如果您要迁移到同一版本中的不同版本(升级或降级),则步骤与上述完全相同,无需浏览设置或重新分析您的项目。
Oracle清理
从6.6版本开始,如果你使用的是Oracle,你可能需要执行一个额外的步骤。在Oracle上,要删除的数据库列现在被标记为未使用的,并且不再被物理删除。为了回收磁盘空间,Oracle管理员必须手动删除这些未使用的列。SQL请求是ALTER TABLE foo DROP UNUSED COLUMNS。相关的表被列在系统表all_unused_col_tabs中。
我们建议您在完成技术升级后,但在重新分析项目之前,刷新数据库的统计信息并重建数据库的索引。
对于 PostgreSQL,这意味着执行 VACUUM FULL。 根据 PostgreSQL 文档:
在正常的 PostgreSQL 操作中,被更新删除或废弃的元组不会从它们的表中物理删除; 它们一直存在,直到完成 VACUUM。
升级 SonarQube 时,您还应该确保使用最新版本的 SonarQube 扫描仪,以利用扫描仪端的功能和修复。 请检查您使用的与 SonarQube 和您的构建工具兼容的最新版本的扫描仪的文档页面。
If you use external configuration, such as a script or Windows Service to control your server, you'll need to update it to point to $NEW_SONAR_HOME.
sc config SonarQube binPath= "\"$NEW_SONAR_HOME\bin\windows-x86-64\wrapper.exe\" -s \"$NEW_SONAR_HOME\conf\wrapper.conf\""
如果你的升级需要重建Elasticsearch索引,你的项目和应用程序将在重新索引后变得可用。在所有项目都被编入索引之前,组合将无法使用。
通常SonarQube发布的版本都会有一些具体的建议,以便从以前的版本升级。你应该阅读你当前版本和目标版本之间每个版本的升级说明。