Instalar Sonar

17
Instalar Sonar – La webapp Sonar Estoy un poco de retraso con esta serie de artículos sobre la instalación de Sonar: con Semana Santa, quería disfrutar un poco de vacaciones por primera vez este año. Y la semana ha sido corta pero intensa, y no he podido poner el blog al día. Hemos terminado con los largos artículos sobre Oracle, y como la instalación de Sonar no es muy complicada – si se toma el tiempo para seguir cuidadosamente cada paso – espero escribir posts más cortos pero más frecuentes . Si llegaste directamente a esta página sin haber visto los posts anteriores, te animo a leerlos. En mi entorno, tengo instalado un JDK (Java 6) , Tomcat 7 y una base de datos Oracle 11 , Hay otros articulos que tratan de hacer funcionar Oracle, y crear un usuario (esquema de base de datos) para Sonar. Si deseas actualizar una versión, no realizar una instalación nueva, puedes encontrar alguna información en esta página . Instalación y configuración de Sonar El primer paso de esta instalación consiste en descargar la última versión de Sonar desde la página de download http://www.sonarsource.org/downloads/ . En nuestro caso, será la actual versión 3.5.1. Así que vamos a descargar el fichero ‘sonar-3.5.1.zip’ y descomprimirlo en un directorio ‘sonar-3.5.1′. En mi caso, he instalado todos mis softwares en el directorio ‘C:\Soft’ con un subdirectorio específico para cada software. Después de descomprimir el archivo zip, ahora tengo un directorio ‘C:\Soft\Sonar\sonar-3.5.1′

description

Instalación de Sonarqube

Transcript of Instalar Sonar

Page 1: Instalar Sonar

Instalar Sonar – La webapp Sonar

Estoy un poco de retraso con esta serie de artículos sobre la instalación de Sonar: con Semana Santa, quería disfrutar un poco de vacaciones por primera vez este año. Y la semana ha sido corta pero intensa, y no he podido poner el blog al día.

Hemos terminado con los largos artículos sobre Oracle, y como la instalación de Sonar no es muy complicada – si se toma el tiempo para seguir cuidadosamente cada paso – espero escribir posts más cortos pero más frecuentes .

Si llegaste directamente a esta página sin haber visto los posts anteriores, te animo a leerlos. En mi entorno, tengo instalado un JDK (Java 6), Tomcat 7 y una base de datos Oracle 11, Hay otros articulos que tratan de hacer funcionar Oracle, y crear un usuario (esquema de base de datos) para Sonar.

Si deseas actualizar una versión, no realizar una instalación nueva, puedes encontrar alguna información en esta página.

Instalación y configuración de Sonar

El primer paso de esta instalación consiste en descargar la última versión de Sonar desde la página de download http://www.sonarsource.org/downloads/. En nuestro caso, será la actual versión 3.5.1.

Así que vamos a descargar el fichero ‘sonar-3.5.1.zip’ y descomprimirlo en un directorio ‘sonar-3.5.1′. En mi caso, he instalado todos mis softwares en el directorio ‘C:\Soft’ con un subdirectorio específico para cada software. Después de descomprimir el archivo zip, ahora tengo un directorio ‘C:\Soft\Sonar\sonar-3.5.1′

En este directorio, buscamos en la carpeta ‘..\conf’ el archivo ‘sonar.properties’ para editarlo.

En este archivo, el usuario Oracle ‘sonar’ ya está definido sonar con su contraseña:

sonar.jdbc.username: sonarsonar.jdbc.password: sonar

Esta corresponde con el usuario de Oracle que hemos creado en este post anterior: Crear un usuario Oracle.

Page 2: Instalar Sonar

No queremos utilizar la base de datos por defecto, así que ponemos las siguientes líneas en comentario:

# Comment the following line to deactivate the default embedded database.# sonar.jdbc.url: jdbc:h2:tcp://localhost:9092/sonar

Y buscamos la sección dedicada a Oracle para configurar nuestra conexión:

sonar.jdbc.url: jdbc:oracle:thin:@localhost:1521/JPORA11

Mi base de datos Oracle se llama JPORA11 y se encuentra en el puerto 1521 (puerto por defecto para Oracle) en mi propia máquina ‘localhost’. Estos son los únicos parámetros que se especificarán de acuerdo a tu propio entorno.

Y ya, hemos terminado de configurar Sonar.

Queda por encontrar el controlador JDBC de Oracle (cliente ligero) ‘ojdbc6.jar’ para copiar este archivo en el directorio ‘\extensions\ jdbc-driver\oracle’ de Sonar. Lo puedes encontrar en el directorio ‘\jdbc\lib’ de tu Oracle (C:\ORA11\11.2.0\dbhome_1\jdbc\lib en mi entorno).

Puedes descargar este driver desde la pagina de requisitos de Sonar, en la parte ‘Supported Platforms’ y localisar los drivers Oracle 11.2.x. Esto te llevará a la web de Oracle donde se puede descargar este fichero. Pero tendras que conectarte con tu cuenta de Oracle.

Desplegar la webapp Sonar

Último paso: generar el archivo ‘sonar.war’ que vamos a usar para desplegar Sonar en Tomcat. Todo el mundo sabe lo que es una archivo WAR: un archivo comprimido que nos permitirá instalar la aplicación Web – el dashboard o cuadro de mando – de Sonar.

Previamente, es posible descargar los plugins (desde la página Plugin Library) que deseas utilizar, en el directorio de Sonar ‘\extensions\plugins’. No es absolutamente necesario, entonces puedes esperar. Yo voy a empezar sin ninguno de estos complementos.

Para crear el archivo ‘sonar.war’, basta con ejecutar el archivo ‘build-war.bat’ en la carpeta ‘\war’ y generarlo en el mismo directorio.

Ahora podemos desplegarlo. Acabo de copiarlo en el directorio ‘C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps’ de Tomcat, y luego iniciar el servicio Tomcat para crear un nuevo directorio – una aplicación web nueva – con el contenido del archivo war.

La primera vez que se instala Sonar, tomará unos minutos para crear el esquema de base de datos del usuario de Oracle definido previamente. Dale tiempo para realizar esta tarea antes de lanzar la webapp de Sonar.

Ahora está disponible desde el navegador a la URL correspondiente al directorio de la webapp Sonar: ‘http://localhost:8888/sonar/’ en mi entorno.

Page 3: Instalar Sonar

Et voilà. Antes de ver la interfaz de Sonar, haremos un primer análisis, para ver los datos en el dashboard.

Instalar SonarQube – Análisis con SonarQube Runner

Hemos instalado anteriormente el portal SonarQube con Tomcat, y el SonarQube Runner, que nos permitirá realizar nuestro primer análisis.

En la carpeta de instalación de SonarQube Runner, tenemos tres directorios:

Un directorio ‘..\lib’ con un .jar necesario para la ejecución del SonarQube-Runner. Un directorio ‘..\conf’ con el archivo  sonar runner.properties’ dedicado a configurar la

conexión con SonarQube y nuestra base de datos. Un directorio ‘..\bin’ dónde está el archivo ‘sonar runner.bat` que nos permite ejecutar

un análisis.

Page 4: Instalar Sonar

Antes de configurarlo este fichero, hagamos una pausa para reflexionar sobre la organización de nuestro entorno de análisis.

Entorno de análisis

Cuando se instala un servidor de análisis de código, es importante diferenciar entre los diferentes espacios según su finalidad:

El espacio dedicado a los diferentes softwares y diferentes versiones de Oracle, Java, Tomcat, SonarQube, etc.

El espacio dedicado a la entrega e instalación del código fuente a analizar. El espacio dedicado al análisis de la implementación: configuración, backups,

personalización, presentación de informes, extracción de datos, el análisis y su documentación (muy útil cuando se multiplican ellos o tu debes volver a hacer un análisis muy antiguo o el servidor de análisis es utilizado por diferentes operadores), etc.

SonarQube nos permite especificar este espacio en el archivo ‘sonar runner.bat’ con la variable ‘HOME PROJECT’.

Entonces buscamos en este archivo la siguiente línea:

set PROJECT_HOME= %CD%

y vamos a cambiarla  para indicar un sub-directorio ‘Projects’ en el que vamos a colocar los archivos de configuración de nuestros análisis. En realidad, yo no pondría este espacio en el directorio del SonarQube Runner, es sólo para nuestra demostración.

He modificado el archivo ‘sonar runner.bat’ para insertar las tres líneas siguientes:

 Enseñar el directorio ‘SONAR RUNNER HOME’ del SonarQube Runner :

echo ”SONAR_RUNNER_HOME = %SONAR_RUNNER_HOME%”

Definir el directorio de análisis ‘PROJECT HOME’ en una carpeta ‘\Projects’ que vamos a crear bajo la carpeta anterior, y escribirlo en la pantalla:

set PROJECT_HOME=%SONAR_RUNNER_HOME%\Projectsecho ”PROJECT_HOME = %PROJECT_HOME%”

Configuración de nuestro análisis inicialPara realizar un análisis, el SonarQube Runner se basa en el archivo ‘sonar-project.properties’ localizado en el entorno de análisis: el directorio ‘Projects’ que acabamos de crear. Nuestro objetivo es analizar una aplicación Java ‘Extranet’ que se encuentra en ‘C:\SRC\Demo\J2EE\Source\Extranet\’.Si no tienes código fuente (o quieres analizar otro tipo de código), puedes recuperar un ejemplo de código y su configuración de análisis en esta página: http://docs.codehaus.org/display/SONAR/Sonar+Project+Examples.

Sin entrar en los detalles de los parámetros para un análisis de código Java, vamos a crear el fichero ‘sonar-project.properties’ con los siguientes attributos:

En primer lugar, los datos necesarios: nombre / clave de esta aplicación, y un número de versión:

# required metadatasonar.projectKey=EXT

Page 5: Instalar Sonar

sonar.projectName=Extranetsonar.projectVersion=1.0

Por supuesto, la ubicación de los archivos que se analizarán:

sonar.sources=C:/SRC/Demo/J2EE/Source/Extranet/WEB-INF/src/

Por último: el lenguaje de programación que decidirá del parser SonarQube para analizar esta aplicación:

#The value of the property must be the key of the language.sonar.language=java

Paquetes y clases Java

Un punto a aclarar si no conoces bien el lenguaje Java. Las clases Java se organizan en paquetes que corresponden a los directorios donde se encuentran los archivos .java para estas clases. La identificación de este paquete se muestra en la primera línea del archivo java.

En este ejemplo, el fichero ‘J2EEConnection.java’ se encuentra en el directorio ‘C:\SRC\Demo\J2EE\Source\Extranet\WEB-INF\src\com\extranet\common’. El directorio fuente – también llamado ‘root’ ou directorio raiz – que indicar en nuestro archivo de configuración de análisis, es inmediatamente por encima de todos los directorios / paquetes.

Si tienes alguna duda, abre un archivo de la aplicación Java para ver la primera línea. luego, busca el directorio ‘padre’ del paquete: es lo que se debe especificar en el archivo de configuración de análisis SonarQube Runner.

Normalmente, se encuentra en un directorio ‘src’, pero a veces no se respeta esta norma, y los paquetes se organizan en diferentes carpetas. En este caso, se deben especificar todos en el ‘sonar project.properties’, separados por una coma, como en el siguiente ejemplo:

sources=../src1/,../src2/

Ejecutar nuestro primer análisis

En una ventana DOS, ejecutamos el archivo ‘sonar-runner.bat’.Vemos las dos variables que apuntan al directorio del SonarQube Runner y nuestro espacio ‘Projects’ con el archivo de configuración de nuestro análisis:

Page 6: Instalar Sonar

Además, podemos ver el nombre del proyecto y el directorio indicado en el parámetro ‘sonar.sources’.

Cuando puedes ver en el log de análisis, el mensaje ‘ANALYSIS SUCCESFULL’:

puedes entrar en el portal SonarQube y ver los resultados de nuestro primer análisis

Page 7: Instalar Sonar

Vemos el nombre del proyecto y el número de version como definido en el ‘sonar-project.properties’.Hemos visto los parámetros más simples que se necesitan para llevar a cabo un análisis. Hay muchos otros que encontrarás en esta página Analyzing with SonarQube Runner.

Hemos completado nuestro análisis inicial de la forma más sencilla posible, mediante unos parámetros necesarios en el archivo ‘sonar-project.properties’, sin la necesidad de gestionar archivos xml de Maven y su sintaxis, a veces compleja.

Sin embargo, proceder así tiene un inconveniente: comprobar errores en una ventana DOS no es muy fácil, especialmente para largos análisis o encontrando muchos errores.

Por suerte, veremos cómo solucionarlo, gracias a nuestro amigo Jenkins.

Artículo siguiente: cómo instalar y configurar Jenkins. A bientôt.

Instalar SonarQube – El plugin SonarQube para Jenkins

Después de instalar Jenkins en el post anterior, vamos a ver ahora cómo configurarlo para poder trabajar con.

Si no has estado siguiendo esta serie sobre la instalación de un entorno de análisis de código con SonarQube, aquí están los artículos que necesitamos hoy:

Instalación de un JDK Java .

Page 8: Instalar Sonar

La instalación de SonarQube, por supuesto. El articulo anterior sobre la instalación de Jenkins.

También puedes echar un ojo a la documentación de configuración del SonarQube plugin para Jenkins.

Instalación del plugin SonarQube para Jenkins

Vamos a empezar con lanzar Jenkins, es decir, la aplicación web correspondiente en Tomcat (http://localhost:8888/jenkins en mi entorno).

Luego, en la página de administración de Jenkins, activamos el menú de gestión de plugins.

En la página siguiente, seleccione la pestaña de los plugins disponibles:

Buscar y seleccionar en esta pagina el plugin SonarQube. Te sugiero que hagas una búsqueda de la cadena ‘Sonar’ para encontrarlo más rápidamente en esta lista muy larga de todos los plugins existentes.

En el final de esta pagina, activar el botón ‘Instalar sin reiniciar’ (’Install without

restart’):  Jenkins inicia la descarga y la instalación del plugin, y una vez finalizada…

… nos advierte que el plugin SonarQube se ha actualizado. Podemos volver a la página de administración de Jenkins para seleccionar el menú de configuración, lo que nos permitirá completar nuestra instalación de SonarQube.

Configuración del SonarQube Runner

Jenkins utilizará el SonarQube Runner (que hemos instalado anteriormente).

Volvemos a la página de administración de Jenkins para activar el menú de configuración y precisar donde se localiza el SonarQube Runner.

En esta página, la primera línea indica el directorio de trabajo de Jenkins, que hemos configurado en el post anterior.

Más abajo, Jenkins nos permite configurar o instalar un JDK.

Page 9: Instalar Sonar

Esto no se necesita si has hecho como indicado en este articulo sobre la instalación de un JDK, y has creado una variable JAVA_HOME con la indicación, en el path de la máquina, del directorio donde se encuentran los ejecutables del JDK (%JAVA_HOME%\bin).

A continuación, una sección dedicada a SonarQube Runner nos permite configurar a Jenkins. En primer lugar, hacer un click en el botón para añadir una instancia de SonarQube Runner.

Esto abrirá la sección de configuración:

En esta sección:

Desmarcar la checkbox para la instalación automática. Entrar un nombre para la instancia de SonarQube Runner. Luego, indicar la ubicación del SonarQube Runner.

Y, por último, no te olvides de guardar la configuración. Ya está.

Configuración de SonarQube

La configuración de SonarQube en Jenkins sigue la misma lógica. En esta misma página de configuración del ‘sistema Jenkins’, buscamos la sección dedicada a SonarQube:

Al igual que antes, click en el botón ‘Add Sonar’ para crear una nueva instancia de SonarQube.

Page 10: Instalar Sonar

Jenkins nos pide introducir un nombre para identificar esta instalación de SonarQube.

Luego, podemos activar el botón ‘Avanzado…’ para abrir una pagina que nos permite entrar los diferentes parametros de configuración.

Son los mismos que hemos definidos en el archivo ‘sonar-properties’ de SonarQube. Así que solo necesitamos abrir este archivo para repetir estos mismos parametros:

Indicamos:

La url de nuestra aplicación web SonarQube. La dirección de nuestra base de datos. El controlador JDBC para acceder a la base de datos.

Mencioné también el usuario de Oracle y la contraseña para acceder al esquema de SonarQube (aunque en realidad he utilizado los valores sonar / sonar por defecto). No incluí un usuario SonarQube para realizar los análisis, ya que no lo había hecho durante la instalación del SonarQube Runner.

No olvides de guardar los parametros con el botón en fin de pagina.

Et voilà. Ahora, podemos hacer análisis SonarQube con Jenkins.

Page 11: Instalar Sonar

Lo que veremos en nuestro próximo artículo. Muy pronto.

Instalar SonarQube – Jenkins

En esta serie de posts sobre la instalación y configuración de SonarQube, hemos visto cómorealisar un análisis de código con el SonarQube Runner.

Hoy vamos a ver cómo instalar y configurar Jenkins para gestionar todos nuestros análisis.

También será una oportunidad para ver la resolución de algunos problemas específicos de nuestro entorno, y ver la forma de detectar estos problemas con el servidor Tomcat, que hemos en un post anterior aquí.

Instalar Jenkins

Vamos a instalar Jenkins como lo hemos hecho para SonarQube con un archivo .war,

Que descargamos desde la pagina principal de Jenkins.

Voy a guardar este archivo ‘jenkins.war’ en una carpeta dedicada a la gestión de mis diferentes versiones de SonarQube, sus plugins, y Jenkins, antes de copiarla en el directorio de Tomcat ‘C:\Program Files (x86)\Apache Software Foundation\Tomcat 7.0\webapps’.

Page 12: Instalar Sonar

Tomcat desplegará a continuación este archivo .war en una aplicación web, que luego podemos acceder desde nuestro navegador con la siguiente url http://localhost:8888/jenkins/. Recodemosnos que 8888 es el puerto elegido durante la instalación de Tomcat.

Log de errores Tomcat

Mi navegador se está ejecutando unos minutos … y luego muestra el siguiente error : ‘PermGen space’.

Esto nos permite ver cómo identificar un problema con Tomcat. Los archivos de logs se encuentran en el directorio ‘..\Apache Software Foundation\Tomcat 7.0\logs’. Hay diferentes ficheros, pero en caso de error, se debería encontrar un archivo ‘tomcat7-stderr.xx.log’ (xx representa la fecha).

Cuando se abre este fichero, se puede ver la causa del error: ‘java.lang.OutOfMemoryError: PermGen space’.

No es muy explicito pero sin entrar en detalles, el ‘PermGen space’ es la memoria reservada para el almacenamiento de las clases Java y la información relacionada con ellas. Tenemos que cambiar nuestra configuración de Tomcat, de la siguiente manera:

Ejecutar el fichero ‘Tomcat7w.exe’ (está localizado en la carpeta ‘..\Apache Software Foundation\Tomcat 7.0\bin’).

En la pestaña Java, entrar la siguiente opción: -XX:MaxPermSize=256m.

Page 13: Instalar Sonar

No te olvides de hacer clic en el botón ‘Aplicar’ y luego en ‘Aceptar’ para salir. Hay que hacer un arranque (Stop / Start) del servicio Tomcat.

Luego, puedes actualizar Jenkins en tu navegador. Et voilá: la pantalla principal Jenkins finalmente aparece.

Puedes ver que mi interfaz está en español: Jenkins detecta automáticamente el idioma que se debe utilizar con la variable correspondiente en tu navegador (y sí, yo vivo en Madrid).

Bueno. Vamos a echar un vistazo a la configuración de Jenkins, en el menú / el enlace Administración (‘Administrar Jenkins en mi caso)..

Configurar Jenkins

En la página de administración, un mensaje me dice que el contenedor de servlets – es decir, Tomcat –no respecta el estándar UTF8, lo que podría causar problemas con caracteres no ASCII (como es el caso en españa, por ejemplo).

Vamos a resolver este problema de la siguiente manera:

Page 14: Instalar Sonar

En la carpeta ‘..\Apache Software Foundation\Tomcat 7.0\conf’, buscar el archivo ‘server.xml’.

En este fichero, buscar la sección ‘Connector’ e insertar la siguiente linea:

URIEncoding=”UTF-8”

Esta linea en mi fichero:

De nuevo, hacer un Restart (Stop / Start) del servicio Tomcat y comprobar que el mensaje de error ha desaparecido.

Desde esta página, ahora seleccionamos el primer menu: ‘Configurar El Sistema‘ en español).

La primera línea de esta página de configuración no indica que Jenkins se instala en el directorio‘C:\Jenkins’. Esto no me conviene en absoluto. Quiero centralizar todos mis softwares en un directorio‘C:\Soft‘ y todo lo relacionado con mis análisis en un directorio ‘C:\SRC” (por ejemplo). Así que necesitocambiar el parámetro de ubicación del “repositorio“ Jenkins.

Hay que especificar una variable ‘HOME JENKINS‘, de la siguiente manera: en el directorio ‘..\ApacheSoftware Foundation\Tomcat 7.0\conf‘, buscar el archivo ‘context.xml‘ e insertar la siguiente línea:

<Environment name=”JENKINS_HOME” value=”C:/SRC/Jenkins/” type=”java.lang.String”/>

Cuidado con la carpeta que vas a escoger: si la cambias después, perderás toda la configuración de Jenkins y hasta lo que se ha instalado, como por ejemplo el plugin SonarQube pour Jenkins.

Plugin que vamos a instalar en un próximo post.

Hasta luego.