SonarQube LTS 7.9.1升级指南

本篇博客详述了SonarQube 6.7.1版本升级到7.9.1版本,并从MySQL迁移到PostgreSQL的过程。包括事前准备、基于Postgres的环境搭建、使用数据迁移工具、删除ES索引及重启服务、升级SonarQube等步骤。在升级过程中,需注意Java版本升级和数据库移植,确保SonarQube正常运行。
摘要由CSDN通过智能技术生成

SonarQube LTS 7.9版之后,放弃了对于MySQL数据库的支持,同时Java的版本已经升至Java 11. 由于此两项依赖均为强制性依赖,所以从老版本上升上来的SonarQube至少需要完成Java版本的升级和数据库的移植才能实现SonarQube的版本升级。这篇文章以容器化的SonarQube服务升级为例,介绍如何实现从SonarQube LTS 6.7.1版本 + MySQL 5.7.16版本 升至SonarQube 7.9.1版本 + PostgreSQL 12.1版本。

事前准备

准备LTS 6.7.1版本 + MySQL 5.7.16的环境,详细可参看:

  • https://liumiaocn.blog.csdn.net/article/details/102691455

准备一些基础数据,用于验证数据库移植前后的效果,此处使用Angular项目的扫描作为示例,详细可参看:

  • https://liumiaocn.blog.csdn.net/article/details/102670480

事前准备的数据详细如下图所示,可以看到有三个扫描的项目,而且SonarQube的版本是6.7.1:
在这里插入图片描述

步骤1: 基于Postgres的SonarQube环境搭建

搭建一个同版本的6.7.1的SonarQube环境,此环境中需要使用Postgresql作为数据库存储SonarQube的信息。如果直接启动一个Postgresql的数据库,然后使用SonarQube官方提供的数据移植工具的化,会提示如下错误信息

Could not determine SonarQube version of the target database. Could not select version from schema_migrations. ERROR: relation "schema_migrations" does not exist

其实此工具应该是建立在对应的数据库结构创建完成的基础上,所以才会要求相同版本。因为本文使用容器化的方式,所以只需要修改docker-compose.yml文件做如下设定即可

liumiaocn:sonar liumiao$ cat docker-compose.6.7.migration.yml 
version: '2'

services:
  # database service: mysql
  mysql:
    image: liumiaocn/mysql:5.7.16
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/data/:/var/lib/mysql
      - ./mysql/conf.d/:/etc/mysql/conf.d
    environment:
      - MYSQL_ROOT_PASSWORD=hello123
      - MYSQL_DATABASE=sonarqube
    restart: "no"

    
  # Security service: sonarqube
  sonarqube:
    image: liumiaocn/sonarqube:6.7.1
    ports:
      - "9000:9000"
    volumes:
      - ./sonar/data/:/opt/sonarqube/data
      - ./sonar/log/:/opt/sonarqube/log
      - ./sonar/extensions/:/opt/sonarqube/extensions
      - ./sonar/conf/:/opt/sonarqube/conf
    environment:
      - SONARQUBE_JDBC_USERNAME=root
      - SONARQUBE_JDBC_PASSWORD=hello123
      - SONARQUBE_JDBC_URL=jdbc:mysql://mysql:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
    links:
      - mysql:mysql
    depends_on:
      - mysql
    restart: "no"

  # database service: postgres
  postgres:
    image: postgres:12-alpine
    volumes:
      - ./postgres/postgresql/:/var/lib/postgresql
      - ./postgres/data/:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar
    restart: "no"

  # Security service: sonarqube for postgresql
  sonarpostgres:
    image: liumiaocn/sonarqube:6.7.1
    ports:
      - "9001:9000"
    volumes:
      - ./sonarpostgres/data/:/opt/sonarqube/data
      - ./sonarpostgres/log/:/opt/sonarqube/log
      - ./sonarpostgres/extensions/:/opt/sonarqube/extensions
      - ./sonarpostgres/conf/:/opt/sonarqube/conf
    environment:
      - SONARQUBE_JDBC_USERNAME=sonar
      - SONARQUBE_JDBC_PASSWORD=sonar
      - SONARQUBE_JDBC_URL=jdbc:postgresql://postgres:5432/sonar
    restart: "no"
liumiaocn:sonar liumiao$ 

这样就启动了一个在9001端口的SonarQube,此SonarQube的数据库使用的是Postgres。启动后的服务信息如下所示

liumiaocn:sonar liumiao$ docker-compose -f docker-compose.6.7.migration.yml  ps
        Name                       Command              State           Ports         
---------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值