1.阅读SonarQube更新日志:

http://docs.codehaus.org/display/SONAR/Upgrading#Upgrading-ReleaseUpgradeNotes

2.停止SonarQube服务:

bin/<SYSTEM>/sonar stop

3.下载新版本号的SonarQube及SonarQube Runner,并解压至新的文件夹NEW_SONARQUBE_HOME

http://www.sonarqube.org/downloads/

4.更新NEW_SONARQUBE_HOME/conf下sonar.properties与wrapper.conf文件中的内容,文件内容參照OLD_SONARQUBE_HOME/conf下对应配置文件的内容,但切记千万不要直接将原来的配置文件拷贝覆盖,由于新的sonar.properties与wrapper.conf文件还包括新版本号的一些配置项。

5.拷贝OLD_SONARQUBE_HOME/extensions/plugins中的插件至NEW_SONARQUBE_HOME/extensions/plugins

6.假设使用的是自己定义的JDBC驱动。将其拷贝至NEW_SONARQUBE_HOME/extensions/jdbc-driver/<dialect>

7.备份数据库:MySQL:

/usr/local/mysql# mysqldump -u sonar -p sonar>sonar.sql
8.启动SonarQube:
bin/<SYSTEM>/sonar stop
9.用浏览器訪问http://localhost:9000/setup (注意:不再是直接訪问localhost:9000),依据提示升级

10.依据实际情况改动系统中或持续集成中全部涉及SONAR_HOME和SONAR_RUNNER_HOME环境变量

11.使用新版SonarQube Runner分析项目


可能遇到的问题:
一、分析项目时报插件兼容性错误
解决:登录http://localhost:9000 WEB中配置——更新中心,将plugins都更新至最新版本号
注:更新Java Plugin时将会有个警告。
  • Version 2.4 moves Java from being an "ecosystem" of multiple plugins to a single, stand-along plugin that encompasses most of the functionality formerly contained in the ecosystem. Unfortunately, SonarQube's update center cannot
    handle the switch gracefully. You may use the update center to download the new version of the plugin. However,you must manually remove the Surefire, JaCoCo, and Squid for Java plugins from $SONARQUBE_HOME/extensions/plugins.

因此。在更新中心中下载新版本号Java Plugin后,须要将$SONARQUBE_HOME/extensions/plugins下老的Surefire,
JaCoCo, and Squid插件jar包删除,并重新启动服务


二、Impossible to upgrade database

Migration failed: An error has occurred, all later migrations canceled: ActiveRecord::JDBCError: Specified key was too long; max key length is 1000 bytes: CREATE UNIQUE INDEX `rules_repo_key`
ON `rules` (`plugin_name`, `plugin_rule_key`) .

Please check logs.

原因:Sonar在MySQL中对表建立索引时。key的长度超过1000 bytes了。因为MySQL使用MyISAM engine时会有key长度的限制。若MySQL使用的是MyISAM engine的话将会出现这个问题


解决:将MySQL的默认engine改动为INNODB
1.检查当前的引擎 
mysql> show engines; 

2.确认确实使用的是MyISAM后,将默认engine改动为INNODB。并重新启动MySQL服务

改动my.cnf配置文件:
/etc/mysql/my.cnf
default-storage-engine=INNODB
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /usr/local/var
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/var
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 64M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
3.查看是否支持动态载入
mysql>show variables like "have_%";
查看have_dynamic_loading这行,假设是YES。则继续 

4.安装插件
mysql>INSTALL PLUGIN INNODB SONAME 'ha_innodb_plugin.so';
mysql>INSTALL PLUGIN INNODB_TRX SONAME 'ha_innodb_plugin.so';
mysql>INSTALL PLUGIN INNODB_LOCKS SONAME 'ha_innodb_plugin.so';
mysql>INSTALL PLUGIN INNODB_LOCK_WAITS SONAME 'ha_innodb_plugin.so';
mysql>INSTALL PLUGIN INNODB_CMP SONAME 'ha_innodb_plugin.so';
mysql>INSTALL PLUGIN INNODB_CMP_RESET SONAME 'ha_innodb_plugin.so';
mysql>INSTALL PLUGIN INNODB_CMPMEM SONAME 'ha_innodb_plugin.so';
mysql>INSTALL PLUGIN INNODB_CMPMEM_RESET SONAME 'ha_innodb_plugin.so'
5.再次查看当前的引擎
mysql> show engines;

6.查看sonar库中有哪些表是使用的MyISAM engine(注:这里TABLE_SCHEMA中的‘sonar’为安装sonar建库时数据库的名称,需改成自身建库时的名称)

SELECT TABLE_NAME, ENGINE   FROM information_schema.TABLES   WHERE TABLE_SCHEMA = 'sonar';
+---------------------------+--------+

| TABLE_NAME                | ENGINE |

+---------------------------+--------+

| action_plans              | MyISAM |

| active_dashboards         | MyISAM |

| active_rule_changes       | MyISAM |

| active_rule_param_changes | MyISAM |

| active_rule_parameters    | MyISAM |

| active_rules              | MyISAM |

| activities                | MyISAM |

| authors                   | MyISAM |

| characteristics           | MyISAM |

| dashboards                | MyISAM |

| dependencies              | MyISAM |

| duplications_index        | MyISAM |

| events                    | MyISAM |

| graphs                    | MyISAM |

| group_roles               | MyISAM |

| groups                    | MyISAM |

| groups_users              | MyISAM |

| issue_changes             | MyISAM |

| issue_filter_favourites   | MyISAM |

| issue_filters             | MyISAM |

| issues                    | MyISAM |

| loaded_templates          | MyISAM |

| manual_measures           | MyISAM |

| measure_filter_favourites | MyISAM |

| measure_filters           | MyISAM |

| metrics                   | MyISAM |

| notifications             | MyISAM |

| perm_templates_groups     | MyISAM |

| perm_templates_users      | MyISAM |

| permission_templates      | MyISAM |

| project_links             | MyISAM |

| project_measures          | MyISAM |

| projects                  | MyISAM |

| properties                | MyISAM |

| quality_gate_conditions   | MyISAM |

| quality_gates             | MyISAM |

| resource_index            | MyISAM |

| rules                     | MyISAM |

| rules_parameters          | MyISAM |

| rules_profiles            | MyISAM |

| schema_migrations         | MyISAM |

| semaphores                | MyISAM |

| snapshot_data             | MyISAM |

| snapshot_sources          | MyISAM |

| snapshots                 | MyISAM |

| user_roles                | MyISAM |

| users                     | MyISAM |

| widget_properties         | MyISAM |

| widgets                   | MyISAM |

+---------------------------+--------+

49 rows in set (0.01 sec)

7.将对应的表更新为INNODB

ALTER TABLE sonar.widget_properties ENGINE=INNODB;
ALTER TABLE sonar.widgets ENGINE=INNODB;
ALTER TABLE sonar.user_roles ENGINE=INNODB;
ALTER TABLE sonar.users ENGINE=INNODB;
ALTER TABLE sonar.snapshot_sources ENGINE=INNODB;
ALTER TABLE sonar.snapshot_data ENGINE=INNODB;
ALTER TABLE sonar.snapshots ENGINE=INNODB;
ALTER TABLE sonar.semaphores ENGINE=INNODB;
ALTER TABLE sonar.schema_migrations ENGINE=INNODB;
ALTER TABLE sonar.rules_profiles ENGINE=INNODB;
ALTER TABLE sonar.rules_parameters ENGINE=INNODB;
ALTER TABLE sonar.rules ENGINE=INNODB;
ALTER TABLE sonar.resource_index ENGINE=INNODB;
ALTER TABLE sonar.quality_gate_conditions ENGINE=INNODB;
ALTER TABLE sonar.quality_gates ENGINE=INNODB;
ALTER TABLE sonar.properties ENGINE=INNODB;
ALTER TABLE sonar.project_measures ENGINE=INNODB;
ALTER TABLE sonar.project_links ENGINE=INNODB;
ALTER TABLE sonar.projects ENGINE=INNODB;
ALTER TABLE sonar.perm_templates_users ENGINE=INNODB;
ALTER TABLE sonar.perm_templates_groups ENGINE=INNODB;
ALTER TABLE sonar.permission_templates ENGINE=INNODB;
ALTER TABLE sonar.notifications ENGINE=INNODB;
ALTER TABLE sonar.metrics ENGINE=INNODB;
ALTER TABLE sonar.measure_filter_favourites ENGINE=INNODB;
ALTER TABLE sonar.measure_filters ENGINE=INNODB;
ALTER TABLE sonar.manual_measures ENGINE=INNODB;
ALTER TABLE sonar.loaded_templates ENGINE=INNODB;
ALTER TABLE sonar.issue_filter_favourites ENGINE=INNODB;
ALTER TABLE sonar.issue_filters ENGINE=INNODB;
ALTER TABLE sonar.issue_changes ENGINE=INNODB;
ALTER TABLE sonar.issues ENGINE=INNODB;
ALTER TABLE sonar.group_roles ENGINE=INNODB;
ALTER TABLE sonar.groups_users ENGINE=INNODB;
ALTER TABLE sonar.groups ENGINE=INNODB;
ALTER TABLE sonar.graphs ENGINE=INNODB;
ALTER TABLE sonar.events ENGINE=INNODB;
ALTER TABLE sonar.duplications_index ENGINE=INNODB;
ALTER TABLE sonar.dependencies ENGINE=INNODB;
ALTER TABLE sonar.dashboards ENGINE=INNODB;
ALTER TABLE sonar.characteristics ENGINE=INNODB;
ALTER TABLE sonar.authors ENGINE=INNODB;
ALTER TABLE sonar.activities ENGINE=INNODB;
ALTER TABLE sonar.active_rule_param_changes ENGINE=INNODB;
ALTER TABLE sonar.active_rule_parameters ENGINE=INNODB;
ALTER TABLE sonar.active_rule_changes ENGINE=INNODB;
ALTER TABLE sonar.active_rules ENGINE=INNODB;
ALTER TABLE sonar.active_dashboards ENGINE=INNODB;
ALTER TABLE sonar.action_plans ENGINE=INNODB;

三、服务端分析项目时或Eclipse本地分析时报

Caused by: org.sonar.api.utils.SonarException: The plugin findbugs
is not supported with Java 1.6.0_**
因为最新版本号的findbugs插件须要JDK1.7及以上的支持,因此须要安装JDK1.7以上
对于Eclipse。若不想改变系统的JAVA环境,而仅仅改变Eclipse中的JAVA环境,则可在eclipse.ini文件里添加
-vm

%JAVA1.7_HOME%/bin/javaw.exe

SonarQube升级的更多相关文章

  1. SonarQube代码质量管理工具的升级(sonarqube6.2 + sonar-scanner-2.8 + MySQL5.6+)

    SonarQube升级注意事项 0. 前提条件 如果之前是使用sonarqube5.2 + sonar-runner-2.4 +MySQL5.5版本或者类似的组合. 安装方法请参照SonarQube代 ...

  2. sonar:sonarqube6.7.6与mysql5.7版本不匹配

    问题 更换sonarqube的数据库为mysql后,启动sonarqube,提示Database was upgraded to a more recent of SonarQube. 解决: 将so ...

  3. Sonar升级遇到的那些事儿

    目录 背景 如何升级 如何回滚 问题解决 参考 背景 目前我们用SonarQube版本是4.0,这次准备升级到最新版本5.1, 以便支持以后的JavaScript的项目. 如何升级 我们可以直接跨越版 ...

  4. SonarQube+Jenkins,搭建持续交付平台

    前言 Kurt Bittner曾说过,如果敏捷仅仅只是开始,那持续交付就是头条! "If Agile Was the Opening Act, Continuous Delivery is ...

  5. jenkins插件安装与升级[三]

    标签(linux): jenkins 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 默认的插件 Folders Plugin OWASP Markup Form ...

  6. SonarQube安装文档

    1.SonarQube 1.1 SonarQube介绍 SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误. SonarQube是否可以使用自定义规则由开发人员的开 ...

  7. SonarQube学习入门指南

    1. 什么是SonarQube? SonarQube 官网:https://www.sonarqube.org/ SonarQube®是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味.它可 ...

  8. sonarQube环境搭建--常见问题及解决

    环境配置:MySQL Server 5.7     Jdk1.8 1.安装mysql数据库(默认安装一路默认到底,注意不要先新建用户账号) a) Mysql 环境变量配置: b)新增my.ini文件: ...

  9. SonarQube安装

    要求 至少1G以上内存,推荐为2G Java:Oracle JRE 7u75+,OpenJDK 7u75+ 数据库: Microsoft SQL Server 2008/2012/2014 MySQL ...

随机推荐

  1. 14.10.1 InnoDB Disk I/O

    14.10 InnoDB Disk IO and File Space Management InnoDB 磁盘IO和文件空间管理: 14.10.1 InnoDB Disk I/O 14.10.2 F ...

  2. Hadoop 2.x从零基础到挑战百万年薪第一季

    鉴于目前大数据Hadoop 2.x被企业广泛使用,在实际的企业项目中需要更加深入的灵活运用,并且Hadoop 2.x是大数据平台处理 的框架的基石,尤其在海量数据的存储HDFS.分布式资源管理和任务调 ...

  3. 1.0.3-学习Opencv与MFC混合编程之---打开本地摄像头

    源代码:http://download.csdn.net/detail/nuptboyzhb/3961643 版本1.0.3新增内容 打开摄像头 Ø 新建菜单项,Learning OpenCV——&g ...

  4. error -27257: Pending web_reg_save_param/reg_find/create_html_param[_ex] request(s) detected and reset at the end of iteration number 1

    检查点函数  web_reg_find("Search=body",     "savecount=num",     "Text=test1&quo ...

  5. 日本IT工作有感

    不知不觉,在日本关西已经呆了快一个月了. 除了饮食有点不是非常习惯.其他感觉都还好. 日本这边的文化还是非常偏向project师的,project师的社会地位非常高,公司里面也没有国内所谓35岁的焦虑 ...

  6. iframe - 基本用法

    · 用target的值,指向iframe框架的name值. <body> <form id="form1" runat="server"> ...

  7. 在StatusBar中显示当前时间

    在StatusBar中显示当前时间,如下: 1.在String Table中插入一项 (注意:状态栏将根据字符串的长度来确定相应窗格的缺省宽度,所以指定为00:00:00就为时间的显示预留了空间)   ...

  8. PowerShell 在线教程 4

    PowerShell 在线教程 4   认识Powershell 介绍和安装 自定义控制台 快速编辑模式和标准模式 快捷键 管道和重定向 Powershell交互式 数学运算 执行外部命令 命令集 别 ...

  9. UVA11324-- The Largest Clique(SCC+DP)

    题目链接 题意:给出一张有向图,求一个结点数最大的结点集,使得该结点集中随意两个结点u和v满足:要么u能够到到v,要么v能够到达u(u和v能够互相到达) 思路:我们能够缩点,用Tarjan求出全部强连 ...

  10. UNIX下改动时间简单一例

    UNIX下改动时间简单一例 仅仅输入date就显示当前的工作站时间,假设有root超级用户权限,加上參数能够改动 工作站的时间. 格式:date mmddHHMM[cc]yy mm--月份,dd--日 ...