Sonar Update Version 3.4 vers 3.4.1

De EjnTricks

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Bug-icon.png MySql version 5.6

Cette mise à jour a été réalisée très tardivement après de multiples tentatives. Entre temps, la version de MySQL est passée à 5.6 et entraîne des erreurs lors de la mise à jour de la base de données. En effet, des indexes sont créés mais sur des colonnes dont la définition entraîne un dépassement de taille sur ces indexes avec le message suivant dans la log /var/opt/sonar/logs/sonar.log.

ActiveRecord::JDBCError: Specified key was too long; max key length is 767 bytes: CREATE  INDEX `semaphore_names` ON `semaphores` (`name`)
        /tmp/tomcat7-tomcat7-tmp/0-sonar/WEB-INF/gems/gems/activerecord-2.3.14/lib/active_record/connection_adapters/abstract_adapter.rb:227:in `log'
        /tmp/tomcat7-tomcat7-tmp/0-sonar/WEB-INF/gems/gems/activerecord-jdbc-adapter-1.1.3/lib/arjdbc/jdbc/adapter.rb:183:in `execute'
        /tmp/tomcat7-tomcat7-tmp/0-sonar/WEB-INF/gems/gems/activerecord-2.3.14/lib/active_record/connection_adapters/abstract/schema_statements.rb:292:in `add_index'
        org/jruby/RubyKernel.java:2088:in `send'
        /tmp/tomcat7-tomcat7-tmp/0-sonar/WEB-INF/gems/gems/activerecord-2.3.14/lib/active_record/migration.rb:352:in `method_missing'
        /tmp/tomcat7-tomcat7-tmp/0-sonar/WEB-INF/gems/gems/activerecord-2.3.14/lib/active_record/migration.rb:328:in `say_with_time'
        classpath:/META-INF/jruby.home/lib/ruby/1.8/benchmark.rb:293:in `measure'
        /tmp/tomcat7-tomcat7-tmp/0-sonar/WEB-INF/gems/gems/activerecord-2.3.14/lib/active_record/migration.rb:328:in `say_with_time'
        /tmp/tomcat7-tomcat7-tmp/0-sonar/WEB-INF/gems/gems/activerecord-2.3.14/lib/active_record/migration.rb:348:in `method_missing'

Dans ce cas, il est "impossible" de déployer la version et cela nécessite des modifications manuelles. Lors d'une mise à jour, les modifications seront moindre que lors d'une installation complète. A noter que cette anomalie est prise en compte dans des versions ultérieures, ce qui a permit de lister les modifications à apporter.

Les mises de la base de données se situent dans le répertoire WEB-INF/db/migrate. Il est préférable de modifier les scripts avant la constitution du package afin de ne pas créer les indexes automatiquement. Ce qui est d'ailleurs étonnant, c'est que MySql ne génère finalement qu'un Warning, mais est considéré comme une erreur par l'outil de mise à jour.

Les instructions suivantes doivent être commentées.

  • Fichier 059_create_properties.rb, add_index :properties, :prop_key, :name => 'properties_key'
  • Fichier 062_add_project_kee_index.rb, add_index :projects, :kee, :name => 'projects_kee'
  • Fichier 151_create_dashboards.rb, add_index :widgets, [:widget_key], :name => 'widgets_widgetkey'
  • Fichier 237_create_table_resource_index.rb, add_index 'resource_index', 'kee', :name => 'resource_index_key'
  • Fichier 286_add_indices_to_resource_index.rb, add_index 'resource_index', 'kee', :name => 'resource_index_key'
  • Fichier 350_create_semaphores.rb, add_index :semaphores, :name, :name => 'semaphore_names'


Après mise à jour, il faudra créér les indexes manuellement avec les requêtes suivantes.

CREATE INDEX `properties_key`  ON `sonar`.`properties` (`prop_key`);
CREATE INDEX `projects_kee`  ON `sonar`.`projects` (`kee`);
CREATE INDEX `widgets_widgetkey`  ON `sonar`.`widgets` (`widget_key`);
CREATE INDEX `resource_index_key`  ON `sonar`.`resource_index` (`kee`);
CREATE INDEX `semaphore_names`  ON `sonar`.`semaphores` (name);


System-Install-icon.png Download-icon.png Téléchargement et installation

#sudo wget http://dist.sonar.codehaus.org/sonar-3.4.1.zip
#sudo unzip sonar-3.4.1.zip

Il faut lancer le script build-war.sh, situé dans le répertoire war qui va générer le fichier war à installer dans le serveur Tomcat. Ce script permet de construire le war à déployer. Cependant, la variable d'environnement sonarHome est construite avec le fichier de configuration build.xml.

  <pathconvert targetos="unix" property="sonarHome">
    <path location="${basedir}/.."/>
  </pathconvert>

Donc, le répertoire de décompression "devrait" être dans un sous répertoire du "home" de Sonar. Dans le cadre de cette utilisation le "home" se situe à l'emplacement /var/opt/sonar. Le paramétrage dans le build.xml

  <pathconvert targetos="unix" property="sonarHome">
    <!-- <path location="${basedir}/.."/> -->
    <path location="/var/opt/sonar"/>
  </pathconvert>
#./build-war.sh
Buildfile: build.xml

clean:

war:
    [mkdir] Created dir: /tmp/install/sonar-3.4.1/war/build/sonar-server
     [copy] Copying 2257 files to /tmp/install/sonar-3.4.1/war/build/sonar-server
     [copy] Copying 3 files to /tmp/install/sonar-3.4.1/war/build/sonar-server/WEB-INF/lib
      [war] Building war: /tmp/install/sonar-3.4.1/war/sonar.war
     [echo]
     [echo]       ------------------------------------------------------------------------------------------------------------------
     [echo]       sonar.war is ready to be deployed. It is linked by default to the Sonar home directory:
     [echo]       /var/opt/sonar
     [echo]       Each machine on which the sonar.war archive is going to be deployed should have locally this Sonar home directory.
     [echo]       This directory is used by Sonar for instance to store Sonar plugins.
     [echo]       This is possible to override this default Sonar home directory by defining the SONAR_HOME environment variable
     [echo]
     [echo]       IMPORTANT NOTES :
     [echo]       * Supported web servers are Jetty and Tomcat 5.x/6.x/7.x
     [echo]       * The war file must be rebuilt in case of sonar upgrade
     [echo]       ------------------------------------------------------------------------------------------------------------------
     [echo]

BUILD SUCCESSFUL
Total time: 7 seconds

Le fichier sonar-war.properties dans WEB-INF/classes dans le war doit contenir la valeur du "home" modifié précédement:

# This file is used only when deploying the webapp to an application server.
# It is ignored when using the standalone mode shipped by default.

# Path to Sonar installation directory, if the environment variable/system property SONAR_HOME is not defined
SONAR_HOME=/var/opt/sonar

L'installation du war s'effectue par simple copie dans le répertoire webapps de Tomcat.

#sudo rm -rf /var/lib/tomcat6/webapps/sonar*
#sudo cp sonar.war /var/lib/tomcat6/webapps/
#sudo chown tomcat6:tomcat6 /var/lib/tomcat6/webapps/sonar.war


Update icon.png Plugin-icon.png Plugins

Il faut ensuite mettre à jour les extensions et plugins installés. Ceux-ci se trouvent dans le "home" spécifié au niveau du fichier sonar-war.properties. Attention à ne pas supprimer les extensions téléchargées dans le répertoire SONAR_HOME/extensions/plugins/, soit /var/opt/sonar/extensions/plugins.

#sudo rm -rf /var/opt/sonar/extensions/jdbc-driver
#sudo rm -f /var/opt/sonar/lib/*.jar
#sudo rm -f /var/opt/sonar/lib/core-plugins/*.jar
#sudo cp -r extensions/jdbc-driver /var/opt/sonar/extensions/jdbc-driver
#sudo cp lib/*.jar /var/opt/sonar/lib
#sudo cp lib/core-plugins/*.jar /var/opt/sonar/lib/core-plugins
#sudo chown -R tomcat6:tomcat6 /var/opt/sonar/extensions/*
#sudo chown tomcat6:tomcat6 /var/opt/sonar/lib/*.jar
#sudo chown tomcat6:tomcat6 /var/opt/sonar/lib/core-plugins/*.jar


Attention, suite à l'installationde la version 3.4, il faut reprendre les plugins qui sont disponibles dans le répertoire extensions/downloads, prêt à être installé au premier démarrage de Sonar.

#sudo cp extensions/downloads/*.jar /var/opt/sonar/extensions/downloads
#sudo chown tomcat6:tomcat6 /var/opt/sonar/extensions/downloads/*.jar


Sur la machine, les plugins suivants doivent être mis à jour:

Il faut redémarrer le serveur pour que les plugins téléchargés viennent remplacer ceux déjà installés.