1 引言

本手册以「将sonarqube6.7.5升级到7.9.1」为例,日后的升级(包括迁移数据库)操作可参考本手册进行!

sonarqube软件仓库:https://binaries.sonarsource.com/Distribution/

2 调研

由于7.8版本及其以上版本都不再支持mysql,而原有环境使用的是mysql,因此还需要将数据从mysql迁移到postgresql上。

3 搭建6.7环境

详见

4 升级sonarqube测试

4.1 官方升级说明主要tips

1) MySQL的不再支持

SonarQube不再支持MySQL。要将MySQL从MySQL迁移到受支持的数据库,请参见免费的MySQL Migrator工具

2) Java的11所需要
SonarQube服务器现在需要Java 11分析,可能会继续在必要时使用Java 8。

3) Pylint应该手动
运行已弃用python分析期间自动运行Pylint。此外,它在Windows的此版本中已损坏。如果需要,必须提前运行Pylint,并将结果报告传递到分析中。

4)ElasticSearch更新需要重建索引,从而可能需要更多的文件空间

4.2 参照官方给出的升级步骤:

  • 在开始之前,请备份SonarQube数据库。升级问题很少见,但是如果有任何事情发生,您将需要备份。详情参照
  • 假设您将SonarQube版本的版本下载并解压缩到一个新目录中, $NEW_SONARQUBE_HOME
  • 手动安装与您的SonarQube版本兼容的非默认插件。使用兼容性列表可确保您安装的版本与服务器版本兼容。请注意,默认情况下会安装您版本中所有SonarSource代码分析器的最新版本。不建议将插件从旧服务器简单地复制到新服务器;不兼容或重复的插件可能会导致启动错误。
  • 使用目录中相关文件的设置(Web服务器URL,数据库,ldap设置等)更新sonar.propertieswrapper.conf文件的内容(中的)。不要复制粘贴旧文件。如果使用的是Oracle DB,则将其JDBC驱动程序复制到$NEW_SONARQUBE_HOME/conf$OLD_SONARQUBE_HOME/conf$NEW_SONARQUBE_HOME/extensions/jdbc-driver/oracle
  • 停止旧的SonarQube服务器
  • 启动新的SonarQube服务器
  • 浏览http://yourSonarQubeServerURL/setup并遵循设置说明
  • 重新分析您的项目以获取新数据

4.3 升级操作流程

4.3.1 准备工作

1)下发升级通知「何时升级+预计多久+影响功能」

例:【SonarQube升级通知】各位好,计划于_年_月_日_时_分升级Sonarqube,预计升级1个小时,届时无法正常使用sonar scanner分析代码,请知悉。

2)备份数据库

详见

3)下载mysql-migrator工具 mysql-migrator-1.1.0.119.zip

4)准备oracleJDK11安装包 jdk-11.0.5_linux-x64_bin.tar.gz

5)准备sonarqube8.0安装包 sonarqube-7.9.1.zip

4.3.2 准备postgre数据库

1)安装yum源
rpm -Uvh https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
2)安装postgresql server
yum install -y postgresql10-server postgresql10
3)初始化PGDATA
/usr/pgsql-10/bin/postgresql-10-setup initdb
4)修改/var/lib/pgsql/10/data/pg_hba.conf以开启MD5认证
host all all 127.0.0.1/32 md5
• 默认情况下,postgresql server监听的地址为localhost。如果需要远程连接postgresql server,则需要修改/var/lib/pgsql/10/data/postgresql.conf中的监听地址如下:
listen_addresses = '*'
• 同时,如果需要远程连接postgresql server,还需要修改/var/lib/pgsql/10/data/pg_hba.conf中的MD5认证为:
host all all 0.0.0.0/0 md5
5)如果开启了防火墙,则需要开启TCP5432端口的监听
firewall-cmd --permanent --add-port=5432/tcp
firewall-cmd --reload
6)启用postgresql server并设置开机自启
systemctl start postgresql-10
systemctl enable postgresql-10
7)检查一下postgresql server的运行状态
systemctl status postgresql-10
netstat -tulpn | grep 5432
8)为sonarqube服务创建数据库
sudo -u postgres psql
CREATE DATABASE sonar;
CREATE USER sonar WITH ENCRYPTED PASSWORD 'SonarTest2019@';
GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar;
ALTER DATABASE sonar OWNER TO sonar;

\q

4.3.3 迁移数据库

1)迁移数据

    • 停止sonar
    systemctl stop sonar
    • 将sonarqube6.7.5 copy一份,修改原sonar的sonar.properties指定新的数据库(修改sonar.jdbc参数)
    sonar.jdbc.url=jdbc:postgresql://172.16.212.134/sonar 
    • 启动sonar
    ./sonar.sh start
    • 停止sonar
    ./sonar.sh  stop 
    • 将原sonar的配置文件改回,并将副本的配置文件改成
    sonar.jdbc.url=jdbc:postgresql://172.16.212.134/sonar
    • 迁移数据
    ./mysql-migrator-1.1.0.119/bin/mysql-migrator -source /opt/sonarqube/conf/sonar.properties -target /opt/sonarqube-6.7.5/conf/sonar.properties
    • 检验数据是否成功复制到了postgre
    sudo -u postgres psql
    \c sonar
    \dt
    select * from projects;

    sonarqube中window版配置postgre sonarqube升级_SonarQube6.7升级到7.9.1

    2)删除旧的索引,重启服务

    rm -fr ./sonarqube/data/es5

    systemctl start sonar

    sonarqube中window版配置postgre sonarqube升级_SonarQube6.7升级到7.9.1_02

    到此,数据迁移成功!

    4.3.4 升级sonarqube到7.9.1

    1)安装JDK11

    #因为现在在通过jdk8运行sonar6.7.5,所以暂时可以不配置全局变量,升级完成后将jdk13配置成全局即可。

    tar zxf jdk-11.0.5_linux-x64_bin.tar.gz -C /usr/local/

    2)配置sonarqube7.9.1

    unzip sonarqube-7.9.1.zip -d /opt/
    cp sonarqube/conf/sonar.properties sonarqube-7.9.1/conf/sonar.properties
    注意:7.9.1中的一定要是这个:sonar.jdbc.url=jdbc:postgresql://172.16.212.134/sonar
    vim sonarqube-7.9.1/conf/wrapper.conf
    wrapper.java.command=/usr/local/jdk-11.0.5/bin/java
    3)停止sonarqube6.7.5,启动7.9.1
    systemctl stop sonar
    mv sonarqube sonarqube-6.7.5.bak
    mv sonarqube-7.9.1 sonarqube
    chown -R sonar:sonar sonarqube
    systemctl start sonar

    4)重新登录页面

    http://172.16.212.133:9000/setup

    sonarqube中window版配置postgre sonarqube升级_数据库_03

    sonarqube中window版配置postgre sonarqube升级_SonarQube6.7升级到7.9.1_04

    sonarqube中window版配置postgre sonarqube升级_SonarQube6.7升级到7.9.1_05

    admin/admin登录

    sonarqube中window版配置postgre sonarqube升级_数据库_06

    升级成功!

    4.3.5 收尾工作

    1)配置JDK11为全局变量

    vim /etc/profile
    JAVA_HOME=/usr/local/java/jdk-11.0.5
     JRE_HOME=/usr/local/java/jdk-11.0.5/jre
     CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
     PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
     export JAVA_HOME JRE_HOME CLASS_PATH PATH

    2)安装插件

    • 安装Chinese汉化包
    • 其他需要的插件