如何將當前平台升級到SonarQube7.9?[最新]


整體思路

  • 准備測試數據(實際環境可跳過此步驟)
  • 數據庫遷移(從版本7.9開始,SonarQube將不再支持MySQL,Mysql-->PG)
  • Sonar版本升級(6.7.7 -> 7.9.1)

准備測試數據

創建用戶數據

images

創建項目數據

安裝sonar-scanner(mac)

tar zxf sonar-scanner-4.0.0.1744-macosx.tar.gz -C /usr/local/
export SONAR_HOME=/usr/local/sonar-scanner-4.0.0.1744-macosx
export PATH=$PATH:$M2_HOME/bin:$SONAR_HOME/bin 

獲取maven項目

git clone https://github.com/zeyangli/simple-java-maven-app.git
mvn clean package
ls -l target/ | awk '{print $NF}'

classes   
maven-archiver
maven-status
my-app-1.1-SNAPSHOT.jar   
surefire-reports    
test-classes    

掃描項目

寫個for循環,循環執行。 執行兩次該腳本(因第一次分析的時候沒有缺陷會不顯示數據)

#!/bin/bash projectName="demo-service" scanTime=`date +%Y%m%d%H%M%S` for((i=1;i<=10;i++)) do sonar-scanner -Dsonar.host.url=http://xxxxxx:9000 \ -Dsonar.projectKey=${projectName}${i} \ -Dsonar.projectName=${projectName}${i} \ -Dsonar.projectVersion=${scanTime} \ -Dsonar.login=admin \ -Dsonar.password=admin \ -Dsonar.ws.timeout=30 \ -Dsonar.projectDescription="my first project!" \ -Dsonar.links.homepage=http://www.baidu.com \ -Dsonar.sources=src \ -Dsonar.sourceEncoding=UTF-8 \ -Dsonar.java.binaries=target/classes \ -Dsonar.java.test.binaries=target/test-classes \ -Dsonar.java.surefire.report=target/surefire-reports echo "${projectName} scan success!" done 

效果

images

准備遷移數據庫

  • 請注意我們要做的是數據庫遷移,是將MySQL遷移到PG數據庫。
  • 我們需要啟動一個跟當前同版本的sonar來完成遷移。
  • 若啟動不同版本的sonar會報錯,詳見FAQ2。

備份MySQL

[root@devops ~]# mysqldump -h 127.0.0.1 -uroot -p sonar >sonar-190803.sql
Enter password:
[root@devops ~]# du -sh sonar-190803.sql
4.6M	sonar-190803.sql

配置PG

#安裝
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
yum install postgresql96-server postgresql96-contrib
/usr/pgsql-9.6/bin/postgresql96-setup initdb
systemctl start postgresql-9.6
systemctl enable postgresql-9.6

#創建Sonar數據庫
su - postgres
psql
create user sonarqube with password 'sonarqube';
create database sonarqube owner sonarqube;
grant all  on database sonarqube to sonarqube;
\q


#遠程訪問設置

vi /var/lib/pgsql/9.6/data/postgresql.conf   
#listen_addresses = '*' 
vi /var/lib/pgsql/9.6/data/pg_hba.conf
# IPv4 local connections:
host    all             all             0.0.0.0/0            trust
# IPv6 local connections:
host    all             all             ::1/128                 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                peer
#host    replication     postgres        127.0.0.1/32            ident
#host    replication     postgres        ::1/128                 ident
host    all     all       0.0.0.0/0                ident

啟動新Sonar

#安裝同版本Sonarqube mkdir pg unzip sonarqube-6.7.7.zip -d pg/ cp sonarqube-6.7.7/conf/sonar.properties pg/sonarqube-6.7.7/conf/sonar.properties #跟源sonar配置相同,唯一不同的是數據庫配置。要改成postgreSQL。 sonar.jdbc.username=xxxx sonar.jdbc.password=xxxx sonar.jdbc.url=jdbc:postgresql://127.0.0.1/sonarqube #一定要啟動,否則會報錯。提示找到目標數據庫中的版本信息。詳見FAQ1 ./sonar.sh start 

MySQL Migrator工具

#解壓
wget https://binaries.sonarsource.com/Distribution/mysql-migrator/mysql-migrator-1.1.0.119.zip
unzip mysql-migrator-1.1.0.119.zip && cd bin

#source.properties
sonar.jdbc.username=xxxx
sonar.jdbc.password=xxxx
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

#target.properties
sonar.jdbc.username=xxxx
sonar.jdbc.password=xxxx
sonar.jdbc.url=jdbc:postgresql://127.0.0.1/sonarqube

# 運行遷移工具
./mysql-migrator -source source.properties  -target target.properties
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table organizations ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table organization_members ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table groups_users ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table rules_parameters ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table rules_profiles ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table org_qprofiles ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table default_qprofiles ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table project_qprofiles ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table qprofile_edit_users ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table qprofile_edit_groups ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table groups ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table snapshots ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table group_roles ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table rule_repositories ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table rules ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table rules_metadata ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table events ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table quality_gates ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table quality_gate_conditions ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table properties ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table project_links ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table duplications_index ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table project_measures ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table internal_properties ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table projects ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table manual_measures ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table active_rules ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table notifications ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table user_roles ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table active_rule_parameters ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table users ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table metrics ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table loaded_templates ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table issues ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table issue_changes ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table permission_templates ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table perm_tpl_characteristics ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table perm_templates_users ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table perm_templates_groups ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table qprofile_changes ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table file_sources ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table ce_queue ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table ce_activity ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table ce_task_characteristics ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table ce_task_input ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table ce_scanner_context ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table user_tokens ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table webhook_deliveries ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table es_queue ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table plugins ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table project_branches ...
[main] INFO org.sonarsource.sqdbmigrator.migrator.ContentCopier - copying table analysis_properties ...
Tables                    Records  Seconds
------------------------  -------  -------
organizations                   1      0.1
organization_members            4      0.0
groups_users                    5      0.0
rules_parameters              686      0.1
rules_profiles                 18      0.0
org_qprofiles                  18      0.0
default_qprofiles               9      0.1
project_qprofiles               0      0.0
qprofile_edit_users             0      0.0
qprofile_edit_groups            0      0.0
groups                          2      0.0
snapshots                      22      0.0
group_roles                    28      0.0
rule_repositories              25      0.0
rules                        2888      0.3
rules_metadata                  0      0.0
events                         21      0.0
quality_gates                   1      0.0
quality_gate_conditions         5      0.0
properties                      4      0.0
project_links                  11      0.0
duplications_index              0      0.0
project_measures             3839      0.3
internal_properties             3      0.0
projects                       55      0.1
manual_measures                 0      0.0
active_rules                 2957      0.1
notifications                   0      0.0
user_roles                      0      0.0
active_rule_parameters        167      0.0
users                           4      0.0
metrics                       145      0.0
loaded_templates                2      0.0
issues                        473      0.1
issue_changes                   0      0.0
permission_templates            1      0.0
perm_tpl_characteristics        0      0.0
perm_templates_users            0      0.0
perm_templates_groups           4      0.0
qprofile_changes             6543      0.3
file_sources                   22      0.0
ce_queue                        0      0.0
ce_activity                    22      0.0
ce_task_characteristics         0      0.0
ce_task_input                   0      0.0
ce_scanner_context             22      0.0
user_tokens                     0      0.0
webhook_deliveries              0      0.0
es_queue                        0      0.0
plugins                        14      0.0
project_branches               11      0.0
analysis_properties             0      0.0

Migration successful in 2.7 seconds


#檢查pg中的數據
\c sonarqube
\dt
select * from projects;


重啟服務

#清除es索引
rm -fr data/es5

#重啟服務
./sonar.sh restart

驗證數據

項目信息

images

用戶信息 

images

總結

  • 到此數據遷移完成,開始准備后面的工作。將sonarqube版本升級到7.9.1 LTS

升級7.9.1

安裝JDK11

#因為現在在通過jdk8運行sonar6.7.7,所以暫時可以不配置全局變量,升級完成后將jdk11配置成全局即可。 tar zxf jdk-11_linux-x64_bin.tar.gz -C /usr/local/ 

配置SonarQube7.9.1

https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.1.zip
unzip sonarqube-7.9.1.zip
cp pg/sonarqube-6.7.7/conf/sonar.properties  sonarqube-7.9.1/conf/sonar.properties

# sonarqube 7.9.1 必須使用jdk11
vim ../../conf/wrapper.conf
wrapper.java.command=/usr/local/jdk-11/bin/java

切換服務

#停止舊版本
cd pg/sonarqube-6.7.7/bin/linux-x86-64/
./sonar.sh stop

#啟動新版本
cd sonarqube-7.9.1/bin/linux-x86-64/
./sonar.sh start

啟動后會看到如下錯誤,需要初始化服務。

images

初始化服務 http://xxxxxxx:9000/setup

images

images

images


哈哈哈哈哈 升級完成了,數據未丟失

imagesimages

總結

  • 升級完成,剩下的就需要安裝相關的插件了。

FAQ

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

新創建的空的PG是不能進行遷移的,需要同版本的soanr使用后才會找到和這個表!

2.Versions in source and target database don't match: 1838 != 2804

此問題一定要注意在做數據庫遷移的時候,先運行一個同版本的新sonar進行遷移哦!

3.遷移完成沒有數據怎么辦? 是不是我操作錯誤了?

需要先刪除es索引再啟動sonarqube,詳見切換服務部分。

4.出現SonarQube is under maintenance

升級后需要初始化詳見切換服務部分。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM