<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diario de Programación &#187; hudson</title>
	<atom:link href="http://blog.chuidiang.com/tag/hudson/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.chuidiang.com</link>
	<description>Programación e informática en general</description>
	<lastBuildDate>Wed, 25 Jan 2012 23:17:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Reina el buen humor</title>
		<link>http://blog.chuidiang.com/2011/02/10/reina-el-buen-humor/</link>
		<comments>http://blog.chuidiang.com/2011/02/10/reina-el-buen-humor/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 14:13:22 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>
		<category><![CDATA[hudson]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=873</guid>
		<description><![CDATA[&#160;Hudson permite personalizar el t&#237;tulo de tu p&#225;gina de compilados con texto html, por lo que permite tambi&#233;n poner fotos, y si lo dejas abierto, cualquiera puede poner el texto que quiera. Aqu&#237; una foto actual de nuestra instalaci&#243;n de hudson]]></description>
			<content:encoded><![CDATA[<p>&nbsp;Hudson permite personalizar el t&iacute;tulo de tu p&aacute;gina de compilados con texto html, por lo que permite tambi&eacute;n poner fotos, y si lo dejas abierto, cualquiera puede poner el texto que quiera. Aqu&iacute; una foto actual de nuestra instalaci&oacute;n de hudson</p>
<p><img alt="Captura de hudson" src="http://img560.imageshack.us/img560/7522/hudson.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2011/02/10/reina-el-buen-humor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Auditoría de software</title>
		<link>http://blog.chuidiang.com/2010/05/26/auditoria-de-software-2/</link>
		<comments>http://blog.chuidiang.com/2010/05/26/auditoria-de-software-2/#comments</comments>
		<pubDate>Wed, 26 May 2010 06:52:02 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[anécdotas]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=793</guid>
		<description><![CDATA[Entre las herramientas que usamos habitualmente, est&#225; Hudson como herramienta de integraci&#243;n continua. Tiene un mont&#243;n de plugins para instalar y de vez en cuando me dedico a jugar con ellos, para ver qu&#233; hacen, alegrar un poco el d&#237;a a la gente poniendo alg&#250;n plugin divertido, o haci&#233;ndoles tirarse de los pelos cuando necesitan [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="hudson-chicas" width="400" height="312" align="right" src="http://blog.chuidiang.com/wp-content/uploads/hudson-chicas.png" />Entre las herramientas que usamos habitualmente, est&aacute; <a href="http://hudson-ci.org/">Hudson</a> como herramienta de integraci&oacute;n continua. Tiene un mont&oacute;n de plugins para instalar y de vez en cuando me dedico a jugar con ellos, para ver qu&eacute; hacen, alegrar un poco el d&iacute;a a la gente poniendo alg&uacute;n plugin divertido, o haci&eacute;ndoles tirarse de los pelos cuando necesitan hudson y no est&aacute; disponible porque le he instalado una cosa que no va.</p>
<p>Entre los plugins, recientemente instal&eacute; dos, el de <a href="http://wiki.hudson-ci.org/display/HUDSON/ChuckNorris+Plugin">Chuck Norris</a>, que hace que aparezcan fotos de Chuck Norris contento si la compilaci&oacute;n ha ido bien, o cabreado si ha ido mal, aparte de poner frases aleatorias estilo &quot;Chuck Norris&#8217;s first program was kill -9&quot;. Tambi&eacute;n puse otro similar, pero <a href="http://wiki.hudson-ci.org/display/HUDSON/Girls+Plugin">con fotos de chicas</a>.</p>
<p>Pues bien, justo ayer, cinco minutos antes, me llaman por tel&eacute;fono que van a venir de una auditor&iacute;a de software para ver, entre otras cosas precisamente el Hudson. As&iacute; que, como un loco, mirando qu&eacute; fotos sal&iacute;an en los proyectos para ense&ntilde;ar s&oacute;lo proyectos de Chuck Norris, no vaya a ser que alg&uacute;n auditor/a se me mosqueara o mosquease.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2010/05/26/auditoria-de-software-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Archiva vs Nexus</title>
		<link>http://blog.chuidiang.com/2009/11/25/archiva-vs-nexus/</link>
		<comments>http://blog.chuidiang.com/2009/11/25/archiva-vs-nexus/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 18:04:16 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[archiva]]></category>
		<category><![CDATA[nexus]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=684</guid>
		<description><![CDATA[&#160; En su d&#237;a nos instalamos un repositorio propio para nuestros jar, de forma que estuvieran accesibles para todos los desarrolladores. Para ello usamos archiva, y ha funcionado m&#225;s o menos bien con sus cosillas. Hace adem&#225;s las veces de proxy con los repositorios de maven que hay por internet. De esta forma, cada desarrollador [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>En su d&iacute;a nos instalamos un repositorio propio para nuestros jar, de forma que estuvieran accesibles para todos los desarrolladores. Para ello usamos <a href="http://blog.chuidiang.com/2008/10/21/jugando-con-archiva/">archiva</a>, y ha funcionado m&aacute;s o menos bien con sus cosillas. Hace adem&aacute;s las veces de proxy con los repositorios de maven que hay por internet. De esta forma, cada desarrollador &uacute;nicamente debe configurar maven para que busque los jars en el repositorio de archiva y es este el que se encarga de acceder a internet y buscarlos si es necesario.</p>
<p>No hace mucho descubr&iacute; que hab&iacute;a otra herramienta similar llamada <a href="http://nexus.sonatype.org/">nexus</a>. Como archiva nos hac&iacute;a cosas raras de vez en cuando (no tra&iacute;a las cosas de los repositorios de internet, no s&eacute; muy bien si por culpa de archiva o de nuestra conexi&oacute;n a internet, que va con proxy autentificado. Tambi&eacute;n dejaba ficheros tmp vac&iacute;os en el repositorio de vez en cuando). As&iacute; que hoy me he decidido a instalar nexus y probar.</p>
<p>La instalaci&oacute;n sencilla, un zip que te bajas, desempaquetas y tienes los scripts necesarios de windows, linux, solaris&#8230; para instalar nexus como servicio y arrancarlo y pararlo. Eso s&iacute;, hay dos versiones, la gratis con menos posibilidades de autentificaci&oacute;n/seguridad, y la de pago que tiene de todo. La gratis en principio tiene lo necesario: gesti&oacute;n de usuarios y permisos propia, funciones de proxy y repositorios propios.</p>
<p>La interface web mucho mejor que la de archiva. Bastante m&aacute;s bonita y agradable. R&aacute;pidamente me puse en ella a configurar nuestros repositorios, tanto los propios, como los repositorios que son proxy de los est&aacute;ndar de internet (que ya vienen configurados los de maven central, apache y codehaus).</p>
<p>Y vamos a las cosas que me han gustado y que me han decidido a intentar el cambio en serio:</p>
<ol>
<li>Es m&aacute;s estricto que archiva con los SNAPSHOTS y las releases. Archiva permite subir y bajar jars snapshots y no snapshots de repositorios snapshots y no snapshots indistintamente. Somos los desarrolladores los que tenemos que tener cuidado de d&oacute;nde subimos los jar. Nexus es m&aacute;s estricto, si intentamos subir un jar no snapshot a un repositorio que hemos marcado como snapshot, protesta. Y al rev&eacute;s tambi&eacute;n.</li>
<li>Permite programar tareas de mantenimiento peri&oacute;dicas y entre ellas, la que veo m&aacute;s &uacute;til en nuestro caso: permite que se limpien autom&aacute;ticamente las versiones snapshots m&aacute;s antiguas o indicar cu&aacute;ntos snapshots quieres como m&aacute;ximo por cada jar. En un entorno de desarrollo como el nuestro en el que <a href="http://blog.chuidiang.com/2008/09/18/hudson/">Hudson</a> genera y sube muchos snapshots gigantes todas las noches, una limpieza peri&oacute;dica se hace imprescindible.</li>
<li>Cuando configuras un repositorio como proxy de uno externo, tienes m&aacute;s visibilidad de si tiene o no conexi&oacute;n con el repositorio externo, si se ha bajado algo de &eacute;l y qu&eacute; se ha bajado.</li>
</ol>
<p>Para ser justos, estoy comparando una versi&oacute;n antigua de archiva, que instal&eacute; hace mucho, con la &uacute;ltima de nexus. Es posible que las versiones m&aacute;s modernas de archiva hayan mejorado o permitan hacer estas cosas que digo que hace nexus.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/11/25/archiva-vs-nexus/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Sonar: viene &#8230; y se va.</title>
		<link>http://blog.chuidiang.com/2009/09/23/sonar-viene-y-se-va/</link>
		<comments>http://blog.chuidiang.com/2009/09/23/sonar-viene-y-se-va/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 20:57:03 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[sonar]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[integración continua]]></category>
		<category><![CDATA[métricas]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=657</guid>
		<description><![CDATA[&#160; Hace un tiempo instal&#233; y prob&#233; Sonar, una estupenda herramienta que genera un informe muy vistoso y c&#243;mo de usar sobre las m&#233;tricas de nuestro c&#243;digo, Pero al final tuve que abandonarlo. El compilado con maven generando el informe era muy lento y el servidor web de sonar acababa dando timeout por la carga [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Hace un tiempo instal&eacute; y prob&eacute; <a href="http://blog.chuidiang.com/2009/02/05/pegas-con-sonar/">Sonar</a>, una estupenda herramienta que genera un informe muy vistoso y c&oacute;mo de usar sobre las m&eacute;tricas de nuestro c&oacute;digo, Pero al final tuve que abandonarlo. El compilado con maven generando el informe era muy lento y el servidor web de sonar acababa dando timeout por la carga a la que se ve&iacute;a sometido. Al final el compilado con maven fallaba por este timeout y eso me hac&iacute;a totalmente imposible integrarlo con <a href="http://blog.chuidiang.com/2008/09/18/hudson/">hudson</a>, para obtener los informes actualizados todas las noches.</p>
<p>El otro d&iacute;a me dio por revisar c&oacute;mo iba el desarrollo de Sonar, qu&eacute; nuevas versiones hab&iacute;an sacado, qu&eacute; problemas hab&iacute;an resuelto &#8230; y me resulto interesante que hab&iacute;an corregido/a&ntilde;adido una nueva &quot;feature&quot;, la <a href="http://jira.codehaus.org/browse/SONAR-764">SONAR-764</a>, en la que b&aacute;sicamente dicen que cargan el trabajo en el plugin de sonar para maven en vez de en el servidor web de sonar. Esto tiene pinta de que puede solucionar los problemas de timeout con el servidor de sonar. As&iacute; que a ello, descargar, instalar y probar.</p>
<p>Las primeras pruebas manuales funcionan a la perfecci&oacute;n. Eso s&iacute;, los compilados tardan casi el doble ya que deben generar adem&aacute;s todos los reportes de m&eacute;tricas, pero ya no tengo el problema de timeout y el informe acaba correctamente y se publica en el servidor web de sonar.</p>
<p>Siguiente paso, hacer que Hudson genere con sonar ese informe todas las noches y lo publique. Y ah&iacute; empezaron los problemas. Algunos proyectos tardaban m&aacute;s en compilar, pero lo hac&iacute;an todo bien y el informe se publicaba. Pero otros proyectos, no necesariamente los m&aacute;s grandes, acababan dando una excepci&oacute;n en el compilado, indicando que &quot;Sonar no se puede ejecutar&quot; y un NullPointerException en los MOJOS de maven. Tras unas investigaciones r&aacute;pidas, no llegu&eacute; a ninguna conclusi&oacute;n ni ning&uacute;n arreglo. El mismo proyecto compilado manualmente en el sitio donde lo hace hudson funciona, pero si lo hace hudson no funciona.</p>
<p>As&iacute; que mi gozo en un pozo. Desinstalar sonar y esperar a una nueva ocasi&oacute;n.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/09/23/sonar-viene-y-se-va/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Nodos esclavos en Hudson</title>
		<link>http://blog.chuidiang.com/2009/09/11/nodos-esclavos-en-hudson/</link>
		<comments>http://blog.chuidiang.com/2009/09/11/nodos-esclavos-en-hudson/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 16:27:12 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[integración continua]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=654</guid>
		<description><![CDATA[&#160; Ayer, jugando con Hudson, descubr&#237; una caracter&#237;stica interesante que pod&#237;a solucionar algunos de los problemas que ten&#237;amos y que adem&#225;s me ha dejado alucinado de la facilidad de instalaci&#243;n. Es la posibilidad de poner a otros ordenadores como esclavos de Hudson, de forma que env&#237;e los compilados de los proyectos a ellos. De esta [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Ayer, jugando con <a href="https://hudson.dev.java.net/">Hudson</a>, descubr&iacute; una caracter&iacute;stica interesante que pod&iacute;a solucionar algunos de los problemas que ten&iacute;amos y que adem&aacute;s me ha dejado alucinado de la facilidad de instalaci&oacute;n. Es la posibilidad de poner a otros ordenadores como esclavos de Hudson, de forma que env&iacute;e los compilados de los proyectos a ellos. De esta forma, una sola instalaci&oacute;n de Hudson puede disponer de varios ordenadores para hacer los compilados y repartirlos entre ellos seg&uacute;n una serie de criterios.</p>
<p>Poner un ordenador esclavo de Hudson en muy sencillo. Desde la misma p&aacute;gina web de nuestra instalaci&oacute;n de Hudson le damos a &quot;a&ntilde;adir nodo esclavo&quot;. Hay varias formas de hacer que Hudson hable con el ordenador esclavo y yo eleg&iacute; &quot;instalar un servicio hudson-esclavo&quot;. Para esta opci&oacute;n, solo hay que dar la IP o nombre del ordenador, un usuario y password con permisos de administrador y luego los detalles &quot;t&eacute;cnicos&quot;, como el path del ordenador esclavo donde queremos que hudson trabaje, d&oacute;nde tiene instalado java o maven, etc. No es necesario que esos paths est&eacute;n compartidos o sena p&uacute;blcos.</p>
<p>Pues bien, una vez dados estos datos, y esto es lo que me ha alucinado, hudson el s&oacute;lito copia unos jar en el directorio remoto que le hemos dicho, instala un servicio y lo arranca. A partir de ah&iacute;, ya tenemos nuestro ordenador esclavo funcionando para nuestro Hudson.</p>
<p>&iquest;C&oacute;mo repartimos nuestros proyectos?. Pues hay varias formas:</p>
<ol>
<li>Dejar que Hudson reparta como quiera.</li>
<li>Asignar un proyecto (desde su configuraci&oacute;n) a un esclavo concreto.</li>
<li>Poner etiquetas a los distintos ordenadores esclavos y luego decir en el proyecto que puede ejecutarse en cualquier ordenador que tenga determinada etiqueta.</li>
</ol>
<p>Esta &uacute;ltima caracter&iacute;stica est&aacute; pensada para que las etiquetas sean estilo windowxp, linux, java5, java6, etc en funci&oacute;n del sistema operativo o versi&oacute;n de java que tenga instalado. De esta podemos decir que un proyecto debe compilarse en cualquier ordenador esclavo que tenga la etiqueta java5 y que, por supuesto, tendr&aacute; instalado java 5.</p>
<p>En nuestra web de hudson, donde habitualmente se ponen las barritas de progreso del compilado, veremos los distintos ordenadores, cada uno con sus barritas correspondiente. Pinchando uno de esos ordenadores, veremos s&oacute;lo los proyectos asignados a ese ordenador.</p>
<p>La posible pega de todo esto es que los compilados paralelos pueden ser problem&aacute;ticos, sobre todo si hay proyectos que dependen unos de otros y se compilan a la vez. La versi&oacute;n m&aacute;s moderna de Hudson, la 1.323, permite poner un &quot;check&quot; en la configuraci&oacute;n del proyecto, indic&aacute;ndole que se quede en la cola de espera si hay alg&uacute;n proyecto del que depende que est&eacute; compilando en ese momento. Ese check tiene un peque&ntilde;o bug, y es que no se puede salvar, as&iacute; que hay que marcarlo tocando directamente en el config.xml del proyecto dentro de los directorios de Hudson.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/09/11/nodos-esclavos-en-hudson/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Jueguecitos con Hudson</title>
		<link>http://blog.chuidiang.com/2009/09/08/jueguecitos-con-hudson/</link>
		<comments>http://blog.chuidiang.com/2009/09/08/jueguecitos-con-hudson/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 18:07:07 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Hudson]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[integración continua]]></category>
		<category><![CDATA[juegos]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=648</guid>
		<description><![CDATA[&#160; Hace tiempo que usamos Hudson como herramienta de integraci&#243;n continua. B&#225;sicamente saca autom&#225;ticamente todas las noches los fuentes de los proyectos que se han tocado durante el d&#237;a, los compila y si hay errores de compilado, manda un correo-colleja a los que han tocado el c&#243;digo. Hudson proporciona una interface web, de forma que [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Hace tiempo que usamos <a href="https://hudson.dev.java.net/">Hudson</a> como herramienta de integraci&oacute;n continua. B&aacute;sicamente saca autom&aacute;ticamente todas las noches los fuentes de los proyectos que se han tocado durante el d&iacute;a, los compila y si hay errores de compilado, manda un correo-colleja a los que han tocado el c&oacute;digo. Hudson proporciona una interface web, de forma que con nuestro navegador podamos ver en todo momento si los proyectos compilan, qu&eacute; fallos de compilado tienen, qui&eacute;n ha tocado, qu&eacute; ha tocado, etc.</p>
<p>Sin embargo, hoy he descubierto que tiene un &quot;jueguecito&quot;. A Hudson se le pueden instalar f&aacute;cilmente plugins, por ejemplo, todos los de m&eacute;tricas (checkstyle, pmd, findbugs, etc), de forma que adem&aacute;s de compilar, pasa todas estas m&eacute;tricas y genera unos informes visibles desde el navegador. Pues el jueguecito consiste en un plugin adicional que se puede instalar, el <a href="http://wiki.hudson-ci.org/display/HUDSON/The+Continuous+Integration+Game+plugin">Continuous Integration Game</a>.</p>
<p>Una vez instalado este plugin, debemos activarlo en la configuraci&oacute;n de cada proyecto (junto con los informes de m&eacute;tricas). De esta forma, cada vez que compila, Hudson asigna o quita puntos a los desarrolladores que ese d&iacute;a han tocado el c&oacute;digo. Les da un punto si compila correctamente, les quita diez si falla, les da puntos si hay test nuevos que pasan, les quita puntos si fallan los test, les da puntos si han corregido m&eacute;tricas, les quita si hay m&aacute;s violaciones de las mismas. Al final, tenemos una tabla de jugadores (desarrolladores) ordenada del de m&aacute;s puntos (el mega-top-developer que lo puede todo) hasta el de menos puntos (el torpe-hasta-decir-basta).</p>
<p>Quiz&aacute;s es injusto para un solo compilado, ya que si falla, se quita diez puntos a todos los que han intervenido, independientemente de que sean o no los causantes. Pero est&aacute; claro que por estad&iacute;stica, a la larga, el torpe interviene en casi todos los compilados fallidos y el listado de puntos se acabar&aacute; ordenando de una forma l&oacute;gica.</p>
<p>Es una chorrada, pero supongo que si hacemos una bromillas con el segundo, el &uacute;ltimo y animamos al primero a conservar su puesto, puede haber verdaderos piques por hacer el c&oacute;digo bien. Pues ah&iacute; ha quedado todo instalado, a ver ma&ntilde;ana qui&eacute;n es el primero de la lista. Incluso podemos poner que todos los lunes los de la mitad de abajo inviten a caf&eacute; a los de la mitad de arriba o que echen un euro en un bote.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/09/08/jueguecitos-con-hudson/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pegas con sonar</title>
		<link>http://blog.chuidiang.com/2009/02/05/pegas-con-sonar/</link>
		<comments>http://blog.chuidiang.com/2009/02/05/pegas-con-sonar/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 18:18:52 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[métricas]]></category>
		<category><![CDATA[sonar]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=489</guid>
		<description><![CDATA[&#160; Como de todos es sabido, soy un &#34;pupas&#34; y las cosas nunca me funcionan bien a la primera ni a la segunda. Coment&#233; hace unos d&#237;as que hab&#237;a instalado y probado sonar. Las primeras pruebas fueron bastante bien, pero con el uso me he ido encontrando las pegas. Realmente, pegas no tiene muchas, en [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Como de todos es sabido, soy un &quot;pupas&quot; y las cosas nunca me funcionan bien a la primera ni a la segunda. Coment&eacute; hace unos d&iacute;as que <a href="http://blog.chuidiang.com/2009/01/27/metricas-en-java-sonar/">hab&iacute;a instalado y probado sonar</a>. Las primeras pruebas fueron bastante bien, pero con el uso me he ido encontrando las pegas.</p>
<p>Realmente, pegas no tiene muchas, en realidad, s&oacute;lo le he visto una, pero molesta bastante.</p>
<p>El plugin de sonar para maven compila nuestro proyecto y pasa todas las m&eacute;tricas. Luego, se pone a insertar en la base de datos de sonar toda esa informaci&oacute;n. Durante ese tiempo, el servidor web de sonar se queda bastante pillado y responde muy lentamente. El problema es que en ese ordenador <a href="http://blog.chuidiang.com/2008/11/22/trac-redmine/">tenemos tambi&eacute;n instalado redmine</a>, <a href="http://blog.chuidiang.com/2008/10/21/jugando-con-archiva/">archiva</a> y <a href="http://blog.chuidiang.com/2008/09/18/hudson/">hudson</a>. Todas esas &quot;web&quot; dejan de responder o responden muy mal mientras se est&aacute;n insertando estad&iacute;sticas en la base de datos.</p>
<p>La siguiente pega, que es m&aacute;s de lo mismo, es que el plugin de sonar para maven tambi&eacute;n intenta acceder a la web de sonar. No s&eacute; el motivo exacto, pero me estoy temiendo que es para avisar al servidor de sonar de que hay nuevas estad&iacute;sticas en base de datos y empiece e echar unas cuentas, organizar los datos o algo. El caso es que cuando el plugin de maven termina, el servidor sonar puede tirarse diez u once minutos &quot;procesando estad&iacute;sticas&quot;, seg&uacute;n pone en la web. Durante ese tiempo, todo el ordenador va muy lento y dejan de responder el hudson, el redmine y el archiva.</p>
<p>Y otra pega m&aacute;s, que viene a ser lo mismo, es que cuando el plugin de maven intenta acceder a la web de sonar, tiene para mi gusto un timeout muy corto, dando error r&aacute;pidamente si no consigue conectarse. Basta con que pille a Hudson compilando para que aquello tenga ciertas probabilidades de error en la conexi&oacute;n. Y no te digo si le pilla procesando estad&iacute;sticas del mismo sonar de un proyecto anterior. Ah&iacute; es imposible conectarse y hay que esperar. Esta pega es realmente gorda, porque me impide meter el plugin de sonar en el hudson, de forma que adem&aacute;s del compilado nocturno, se calculen las m&eacute;tricas nocturnas. El compilado del primer proyecto funciona o no, seg&uacute;n le de, pero los dem&aacute;s nunca funcionan.</p>
<p>Total, que voy a tener que agenciarme otro pc/estaci&oacute;n de trabajo para instalar exclusivamente sonar. Y aun as&iacute;, quiz&aacute;s hudson no pueda publicar las estad&iacute;sticas si pilla a sonar &quot;procesando&quot; informaci&oacute;n.</p>
<p>Ah, el ordenador no es lo m&aacute;s mejor del mundo, pero tampoco es viejo. Supongo que tendr&eacute; que probar en un linux en vez de un windows, o quiz&aacute;s es una estaci&oacute;n de trabajo solaris.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/02/05/pegas-con-sonar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Métricas en Java: Sonar</title>
		<link>http://blog.chuidiang.com/2009/01/27/metricas-en-java-sonar/</link>
		<comments>http://blog.chuidiang.com/2009/01/27/metricas-en-java-sonar/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 18:51:12 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[métricas]]></category>
		<category><![CDATA[sonar]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=467</guid>
		<description><![CDATA[Esta ma&#241;ana he pasado casi toda la ma&#241;ana en una reuni&#243;n de esas de llorar. Se pretend&#237;a establecer un plan de acci&#243;n para solucionar un problema y al final se ha quedado en un &#34;pobrecitos de nosotros&#8230;&#34;, &#34;cu&#225;ntos problemas tenemos&#8230;&#34;, &#34;qu&#233; malo es el cliente&#8230;&#34;, &#34;qu&#233; pocos somos para hacer el trabajo&#8230;&#34;, &#34;qu&#233; poco tiempo [...]]]></description>
			<content:encoded><![CDATA[<p>Esta ma&ntilde;ana he pasado casi toda la ma&ntilde;ana en una reuni&oacute;n de esas de llorar. Se pretend&iacute;a establecer un plan de acci&oacute;n para solucionar un problema y al final se ha quedado en un &quot;pobrecitos de nosotros&#8230;&quot;, &quot;cu&aacute;ntos problemas tenemos&#8230;&quot;, &quot;qu&eacute; malo es el cliente&#8230;&quot;, &quot;qu&eacute; pocos somos para hacer el trabajo&#8230;&quot;, &quot;qu&eacute; poco tiempo tenemos &#8230;&quot;,&#8230;.</p>
<p>As&iacute; que al terminar la reuni&oacute;n, me fu&iacute; a comer y me pas&eacute; la tarde totalmente desmotivado para el trabajo. Me puse a &quot;internetear&quot; en busca de cosas interesantes y encontr&eacute; <a href="http://sonar.codehaus.org/">Sonar</a>.</p>
<p>Sonar es una herramienta para la medici&oacute;n de m&eacute;tricas del c&oacute;digo java (<a href="http://www.chuidiang.com/chuwiki/index.php?title=Maven_y_PMD">pmd</a>, javancss, findbugs, &#8230; todo junto), pero aporta un par de cosas que me han parecido interesantes.</p>
<p>En primer lugar, al arrancar Sonar, se arranca un servidor web. Las m&eacute;tricas de nuestros proyectos estar&aacute;n accesibles en el navegador v&iacute;a web. Bien, de momento nada del otro mundo.</p>
<p>La parte interesante es que las m&eacute;tricas se generan con un plugin de <a href="http://www.chuidiang.com/java/herramientas/maven.php">maven</a> y ese plugin busca al servidor web para a&ntilde;adirle el proyecto (si es la primera vez que lo compilamos con el plugin) o para actualizarle las m&eacute;tricas. Esto no deja de ser una peque&ntilde;a maravilla, puesto que se puede ejecutar el plugin en nuestros compilados nocturnos, de forma que siempre tendremos en el servidor web de Sonar las m&eacute;tricas actualizadas al d&iacute;a. Es m&aacute;s, Sonar guarda las estad&iacute;sticas de c&oacute;mo evolucionan las m&eacute;tricas, as&iacute; que con el tiempo tendremos un gr&aacute;fico que indica si cada vez hay m&aacute;s o menos violaciones de m&eacute;tricas en el proyecto.</p>
<p>La segunda cosa que me ha resultado interesante es la forma de presentar los resultados. Aparte de las obligadas tablas con valores, se presentan con bloques de colores por proyectos, paquetes y clases. Me explico, hay una vista en la que salen los proyectos como bloques de colores, cada bloque del tama&ntilde;o proporcional al tama&ntilde;o del proyecto. El color es rojo si el proyecto tiene muchas violaciones de m&eacute;tricas y va tirando a verde seg&uacute;n est&eacute; mejor. Pinchando el cuadro de un proyecto, se cambia la vista a los paquetes en ese proyecto, nuevamente con rect&aacute;ngulos de distintos tama&ntilde;os y colores. Pinchando en uno de esos paquetes, aparecen las clases con el mismo tipo de presentaci&oacute;n visual.</p>
<p>Esta forma de presentaci&oacute;n es realmente interesante si se pretenden arreglar las m&eacute;tricas de un proyecto que est&eacute; mal. Con ella se puede navegar r&aacute;pidamente e identificar los proyectos, paquetes y clases m&aacute;s conflictivos, centr&aacute;ndose primero en ellos.</p>
<p>Y ya puestos, tambi&eacute;n tiene una nube de tags en el que cada tag es una de las clases del proyecto. Los tags m&aacute;s gordos son las clases m&aacute;s horribles &quot;m&eacute;tricamente&quot; hablando. As&iacute; que incluso es mucho m&aacute;s sencillo identificar de un s&oacute;lo vistazo cual es la primera clase que deber&iacute;amos arreglar de todos los proyectos que tenemos. Por supuesto, te presenta el c&oacute;digo fuente de la clase indicando en qu&eacute; puntos hay violaciones de m&eacute;tricas y cuales.</p>
<p>En este enlace tienes explicadas las <a href="http://docs.codehaus.org/display/SONAR/Sonar+in+a+nutshell">distintas pantallas de Sonar</a> y puedes ver los cuadraditos y nubes de tags que menciono. </p>
<p>Actualmente metemos el plugin pmd en maven de forma que si fallan las m&eacute;tricas, falla el compilado. Es la forma de garantizar que la gente codifica siguiendo las m&eacute;tricas desde el principio. Sin embargo, tenemos mucho c&oacute;digo con m&eacute;tricas horribles, ya que nunca nos hab&iacute;amos preocupado en serio de ello. Sonar me va a permitir identificar los peores trozos de c&oacute;digo e ir arregl&aacute;ndolos poco a poco. </p>
<p>En fin, Sonar es una herramienta que intentar&eacute; ver c&oacute;mo integro en los proyectos con Hudson (creo que <a href="http://hudson.gotdns.com/wiki/display/HUDSON/Sonar+plugin">hay plugin de Sonar para Hudson</a>), que me dar&aacute; entreteniento unos d&iacute;as y si quieren que trabaje en algo serio, que no me metan en reuniones desmoralizantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2009/01/27/metricas-en-java-sonar/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hudson</title>
		<link>http://blog.chuidiang.com/2008/09/18/hudson/</link>
		<comments>http://blog.chuidiang.com/2008/09/18/hudson/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 17:03:10 +0000</pubDate>
		<dc:creator>Chuidiang</dc:creator>
				<category><![CDATA[Herramientas]]></category>
		<category><![CDATA[bitten]]></category>
		<category><![CDATA[continuum]]></category>
		<category><![CDATA[cruisecontrol]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[integración continua]]></category>

		<guid isPermaLink="false">http://blog.chuidiang.com/?p=409</guid>
		<description><![CDATA[&#160;Este comentario de Blaxter me ha llevado a probar las herramientas que &#233;l indica para integraci&#243;n continua, en lugar de CruiseControl o Continuum. La primera herramienta, bitten, la descart&#233; sin probarla, porque parece que es como un plugin para Trac, que de momento no puedo usar, aunque quiero, porque no soporta CVS. Tampoco me fij&#233; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;Este <a href="http://blog.chuidiang.com/2008/09/16/continuum-vs-cruisecontrol/#comments">comentario de Blaxter</a> me ha llevado a probar las herramientas que &eacute;l indica para integraci&oacute;n continua, en lugar de <a href="http://cruisecontrol.sourceforge.net/">CruiseControl</a> o <a href="http://continuum.apache.org/">Continuum</a>.</p>
<p>La primera herramienta, <a href="http://bitten.edgewall.org/">bitten</a>, la descart&eacute; sin probarla, porque parece que es como un plugin para <a href="http://trac.edgewall.org/">Trac</a>, que de momento no puedo usar, aunque quiero, porque no soporta CVS. Tampoco me fij&eacute; demasiado si se puede arrancar suelta, pero me hace la impresi&oacute;n de que s&iacute;.</p>
<p>As&iacute; que me fu&iacute; con la segunda, <a href="https://hudson.dev.java.net/">Hudson</a>.</p>
<p>Una maravilla de herramienta.</p>
<p>La instalaci&oacute;n muy sencilla. Se baja uno un .war y ejecuta <em>java -jar hudson.war</em>. Abres el navegador y ya tienes lista la p&aacute;gina de hudson, preparada para configurar y a&ntilde;adir proyectos.</p>
<p>La configuraci&oacute;n sencilla y toda a v&iacute;a web. Todav&iacute;a no he tenido que tocar ning&uacute;n fichero externo, salvo la variable HUDSON_HOME antes de arrancar, para decirle a Hudson d&oacute;nde debe situar todo.</p>
<p>Los proyectos se a&ntilde;aden f&aacute;cil, copiando unos de otros, indicando el repositorio CVS, subversion o lo que sea, si es de maven, de ant, etc.</p>
<p>Sin embargo, lo que m&aacute;s me ha gustado de todo, es que es &quot;inteligente&quot;. Trabajando con varios proyectos maven es capaz de ver las dependencias entre proyectos y autom&aacute;ticamente, si un proyecto necesita compilarse, despu&eacute;s compila todos los que dependen de &eacute;l. Y al rev&eacute;s, para mirar si un proyecto necesita compilarse, mira tambi&eacute;n autom&aacute;ticamente si necesitan compilarse los proyectos de los que depende.</p>
<p>Dicho de otra forma, si tengo un proyecto LIBRERIA y otro proyecto PROYECTO que usa librer&iacute;a, si meto algo en CVS de LIBERIA, me compial LIBRERIA y autom&aacute;ticamente despu&eacute;s compila PROYECTO. Y al rev&eacute;s, cuando mira a ver si hay alg&uacute;n cambio de CVS en PROYECTO para ver si necesita compilarlo, mira autom&aacute;ticamente tambi&eacute;n los posibles cambios en CVS de LIBRERIA.</p>
<p>Esto tiene la ventaja de que garantiza que todos los proyectos est&aacute;n siempre actualizados y compilados con las &uacute;ltimas librer&iacute;as disponibles de las que dependen y que si se toca una librer&iacute;a, se detecta r&aacute;pido si eso estropea el compilado de un proyecto.</p>
<p>Sin embargo tiene una &quot;pega&quot; o efecto curioso. Basta tocar un fuente en una librer&iacute;a para que Hudson se ponga a compilar como loco unos proyectos y otros, y los compilados de unos provoquen a su vez los compilados de otros. Por un simpel fuente tocado, puede pasarse un par de horas compilando todas las dependencias y las dependencias de las dependencias (cosa, por otro lado, l&oacute;gica).</p>
<p>En cuanto al resto, tambi&eacute;n estupendo. Todo lo que se te ocurre configurar, esta configurable via web (el servidor de email, cuantos logs quieres que guarde, comando para construir los proyectos si no es el de defecto, los path de java, ant, maven, sh, etc, etc, etc. Tambi&eacute;n puedes configurar cu&aacute;ntos hilos de compilado paralelos quieres, de forma que pueden compilar hasta n proyectos simult&aacute;neos, eligiendo t&uacute; el valor de n.</p>
<p>Me queda pendiente probar bitten, pero de momento Hudson lleva todas las papeletas de quedarse como herramienta.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.chuidiang.com/2008/09/18/hudson/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

