<?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>sonarqube &#8211; Webmago Dev</title>
	<atom:link href="https://webmago.dev/tag/sonarqube/feed/" rel="self" type="application/rss+xml" />
	<link>https://webmago.dev</link>
	<description>Creando codigo desde 1990</description>
	<lastBuildDate>Thu, 15 Apr 2021 17:37:51 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Integrando SonarQube en pipelines CI/CD de Codefresh</title>
		<link>https://webmago.dev/integrando-sonarqube-en-pipelines-ci-cd-de-codefresh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=integrando-sonarqube-en-pipelines-ci-cd-de-codefresh</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Tue, 08 Dec 2020 01:21:05 +0000</pubDate>
				<category><![CDATA[codefresh]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[sonarqube]]></category>
		<category><![CDATA[git]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=689</guid>
					<description><![CDATA[Hace unos días vi un twit de Codefresh, donde incluso retuitee que la versión usada para su demostración era la de Pago SonarCloud y no SonarQube, por lo que retuitee que si se exponía la instalación gratuita de SonarQube tendría el mismo resultado. Code analysis made easy with the Codefresh&#8217;s @SonarQube integration &#8212; view the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Hace unos días vi un twit de <a title="Codefresh" href="https://codefresh.io" target="_blank" rel="noopener noreferrer">Codefresh</a>, donde incluso retuitee que la versión usada para su demostración era la de Pago <a title="SonarCloud" href="https://sonarcloud.io/" target="_blank" rel="noopener noreferrer">SonarCloud</a> y no <a title="SonarQube" href="https://www.sonarqube.org/" target="_blank" rel="noopener noreferrer">SonarQube</a>, por lo que retuitee que si se exponía la instalación gratuita de SonarQube tendría el mismo resultado.</p>
<blockquote class="twitter-tweet">
<p dir="ltr" lang="en">Code analysis made easy with the Codefresh&#8217;s <a href="https://twitter.com/SonarQube?ref_src=twsrc%5Etfw">@SonarQube</a> integration &#8212; view the analysis report after every build ? <a href="https://t.co/lg3VW2hFZO">https://t.co/lg3VW2hFZO</a><a href="https://twitter.com/hashtag/DevOps?src=hash&amp;ref_src=twsrc%5Etfw">#DevOps</a> <a href="https://twitter.com/hashtag/codeanalysis?src=hash&amp;ref_src=twsrc%5Etfw">#codeanalysis</a> <a href="https://twitter.com/hashtag/testing?src=hash&amp;ref_src=twsrc%5Etfw">#testing</a> <a href="https://twitter.com/urlichsanais?ref_src=twsrc%5Etfw">@urlichsanais</a> <a href="https://t.co/SkWJab3mKD">pic.twitter.com/SkWJab3mKD</a></p>
<p>— Codefresh (@codefresh) <a href="https://twitter.com/codefresh/status/1334180752267890694?ref_src=twsrc%5Etfw">December 2, 2020</a></p></blockquote>
<p><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Así que me dí a la tarea de integrar el escaneo de código de uno de los proyectos asignados para confirmar la integración sugerida.</p>
<p>El documento en inglés de Codefresh puedes encontrarlo en <a title="Continuous Code Analysis with SonarQube and Codefresh" href="https://codefresh.io/howtos/sonarqube/" target="_blank" rel="noopener noreferrer">Continuous Code Analysis with SonarQube and Codefresh</a>, lo revise y por supuesto que tiene algunos detalles por resolver, en este <a title="La importancia de la calidad del código" href="https://webmago.dev/la-importancia-de-la-calidad-del-codigo/" target="_blank" rel="noopener noreferrer">artículo</a> describí que implemente SonarQube para escanear el código de los proyectos que me son asignados y que había implementado un Script en Bash para hacer el escaneo, algo manual por supuesto, por lo que hacer esto en el pipeline dejaría sin efecto a mi Bash Script, algo que ansiaba hacer en el corto plazo.</p>
<p>Por lo que describiré aquí cómo fue que lo implemente.</p>
<p>&nbsp;</p>
<h3><strong>Creando el proyecto en SonarQube.</strong></h3>
<p>Si aún no has instalado SonarQube, te recuerdo que puedes hacerlo usando Docker, mas información en <a title="Install the Server" href="https://docs.sonarqube.org/latest/setup/install-server/" target="_blank" rel="noopener noreferrer">Install the Server</a>.</p>
<ol>
<li>Para evitar &#8220;conflictos&#8221; y evitar &#8220;mirones&#8221; genere un nuevo Grupo y le asigne permisos únicamente para que el Administrador o Usuario indicado pueda ver este proyecto.</li>
<li>Genere el proyecto siguiendo el asistente de SonarQube y le asigne un Token para que desde Codefresh pueda usarlo.</li>
</ol>
<div id="attachment_696" style="width: 1034px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-696" class="size-large wp-image-696" src="https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-1024x499.png" alt="Creando Proyecto en Sonarqube" width="1024" height="499" srcset="https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-1024x499.png 1024w, https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-300x146.png 300w, https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-768x374.png 768w, https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube-1536x748.png 1536w, https://webmago.dev/buvytsan/2020/12/CreandoProyectoSonarqube.png 1572w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-696" class="wp-caption-text">Creando Proyecto en Sonarqube</p></div>
<p>&nbsp;</p>
<div id="attachment_702" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-702" class="wp-image-702 size-large" src="https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-1024x578.png" alt="Proyecto Creado SonarQube" width="1024" height="578" srcset="https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-1024x578.png 1024w, https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-300x169.png 300w, https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-768x434.png 768w, https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-1536x868.png 1536w, https://webmago.dev/buvytsan/2020/12/Proyecto-Creado-SonarQube-1-2048x1157.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-702" class="wp-caption-text">Proyecto Creado SonarQube</p></div>
<p>&nbsp;</p>
<h3><strong>Integrando el Plugin al Pipeline del proyecto en Codefresh.</strong></h3>
<p>Este fue uno de los pasos de mayor atención, ya que mis pipelines toman las configuraciones de un repositorio adicional, por  lo que tuve que adicionar un Plugin solo para copiar el archivo <code>sonar-project.properties</code> en la raíz del proyecto.</p>
<div id="attachment_704" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-704" class="size-large wp-image-704" src="https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh-1024x663.png" alt="Integración Plugin Pipeline Codefresh" width="1024" height="663" srcset="https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh-1024x663.png 1024w, https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh-300x194.png 300w, https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh-768x497.png 768w, https://webmago.dev/buvytsan/2020/12/Integracion-Plugin-Pipeline-Codefresh.png 1519w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-704" class="wp-caption-text">Integración Plugin Pipeline Codefresh</p></div>
<p>&nbsp;</p>
<h3><strong>La hora de la verdad, ejecutando el pipeline manualmente.</strong></h3>
<p>Aquí es donde veremos si realmente funciona la teoría, claro que la ejecución final tuvo como antecesores varias pruebas para darnos cuenta que debido a la configuración que tomamos por separado no obtenía la propiedad <code>sonar.projectKey</code> necesaria para identificar al proyecto en nuestro SonarQube.</p>
<p>En la imagen podemos ver la ejecución exitosa de nuestro pipeline, en el log del paso <strong><em>QUALITY</em></strong> podemos ver el ID de la Tarea (Task) la cual es <code>AXY_dPYDfvCgCTUgh8X4</code> y debe coincidir con la tarea en el &#8220;fondo&#8221; (background) en nuestro escritorio, sección de tareas de SonarQube.</p>
<div id="attachment_707" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-707" class="size-large wp-image-707" src="https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-1024x531.png" alt="Ejecución Pipeline SonarQube Codefresh" width="1024" height="531" srcset="https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-1024x531.png 1024w, https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-300x155.png 300w, https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-768x398.png 768w, https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh-1536x796.png 1536w, https://webmago.dev/buvytsan/2020/12/Ejecucion-Pipeline-SonarQube-Codefresh.png 1912w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-707" class="wp-caption-text">Ejecución Pipeline SonarQube Codefresh</p></div>
<p>&nbsp;</p>
<h3><strong>Comprando en la cola de SonarQube la tarea de escaneo.</strong></h3>
<p>Como lo anticipe en mi <a title="The document mention SonarCloud (payment) instead Sonarqube (Free), I think I you expose your Sonarqube you can do the same with @codefresh pipeline." href="https://twitter.com/WebMago/status/1334187107028520969">retuit</a>, mencionando que usaban SonarCloud y que si exponían su instalación de SonarQube se podría hacer lo mismo que se indica en el Howto.</p>
<p>Así que vayamos a ver el Dashboard de SonarQube, he puesto en rojo el ID de la Tarea (Task) en la imagen para su rápida identificación.</p>
<div id="attachment_709" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-709" class="size-large wp-image-709" src="https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-1024x359.png" alt="Tareas en Background SonarQube" width="1024" height="359" srcset="https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-1024x359.png 1024w, https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-300x105.png 300w, https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-768x269.png 768w, https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-1536x538.png 1536w, https://webmago.dev/buvytsan/2020/12/Tareas-en-Background-SonarQube-2048x717.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-709" class="wp-caption-text">Tareas en Background SonarQube</p></div>
<p>Efectivamente podemos ver que la tarea del análisis lanzada desde Codefresh se esta ejecutando en mi instancia de SonarQube y al finalizar puedo revisar la calidad del código del proyecto.</p>
<div id="attachment_710" style="width: 1034px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-710" class="size-large wp-image-710" src="https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-1024x597.png" alt="Escritorio Proyecto SonarQube" width="1024" height="597" srcset="https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-1024x597.png 1024w, https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-300x175.png 300w, https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-768x447.png 768w, https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-1536x895.png 1536w, https://webmago.dev/buvytsan/2020/12/Escritorio-Proyecto-SonarQube-2048x1193.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-710" class="wp-caption-text">Escritorio Proyecto SonarQube</p></div>
<p>Con esto comprobamos la integración del escaneo de código usando SonarQube lanzado desde un pipeline en Codefresh.</p>
<p>Si necesitas ayuda puedes contactarme en este <a title="Formulario de Contacto" href="https://webmago.dev/#contact" target="_blank" rel="noopener noreferrer">enlace</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
