<?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>development | Webmago Dev</title>
	<atom:link href="https://webmago.dev/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>https://webmago.dev</link>
	<description>Creando codigo desde 1990</description>
	<lastBuildDate>Sat, 10 May 2025 13:39:07 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Mi Experiencia con Google Cloud Functions: Validación y Procesamiento Seguro de Archivos</title>
		<link>https://webmago.dev/mi-experiencia-con-google-cloud-functions-validacion-y-procesamiento-seguro-de-archivos/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Fri, 09 May 2025 16:12:08 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[gcp]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=5903</guid>
					<description><![CDATA[<p>En este post, compartiré mi experiencia desarrollando una solución en Google Cloud Platform (GCP) que automatiza la validación y procesamiento de archivos utilizando Cloud Functions, Cloud Storage y validación de firmas digitales. 🔹 El Problema: Procesamiento Seguro de Archivos Un cliente necesitaba un sistema donde: Al subir un archivo cifrado y comprimido a un bucket de Cloud Storage, [&#8230;]</p>
The post <a href="https://webmago.dev/mi-experiencia-con-google-cloud-functions-validacion-y-procesamiento-seguro-de-archivos/">Mi Experiencia con Google Cloud Functions: Validación y Procesamiento Seguro de Archivos</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p class="ds-markdown-paragraph">En este post, compartiré mi experiencia desarrollando una solución en <strong>Google Cloud Platform (GCP)</strong> que automatiza la validación y procesamiento de archivos utilizando <strong>Cloud Functions, Cloud Storage y validación de firmas digitales</strong>.</p>
<h2><strong>🔹 El Problema: Procesamiento Seguro de Archivos</strong></h2>
<p class="ds-markdown-paragraph">Un cliente necesitaba un sistema donde:</p>
<ol start="1">
<li>
<p class="ds-markdown-paragraph"><strong>Al subir un archivo cifrado y comprimido a un bucket de Cloud Storage</strong>, se validara su autenticidad mediante una <strong>firma compartida</strong> entre emisor y receptor.</p>
</li>
<li>
<p class="ds-markdown-paragraph">Si el archivo era válido, se <strong>descomprimía</strong> y se verificaba la integridad de los archivos internos usando <strong>SHA-256</strong>.</p>
</li>
<li>
<p class="ds-markdown-paragraph">Solo los archivos que pasaran todas las validaciones serían procesados.</p>
</li>
</ol>
<h2><strong>⚡ La Solución: Automatización con Cloud Functions</strong></h2>
<h3><strong>1️⃣ Trigger por Eventos de Cloud Storage</strong></h3>
<p class="ds-markdown-paragraph">Configuré una <strong>Cloud Function</strong> activada por eventos de Cloud Storage (<code>google.storage.object.finalize</code>), lo que permite ejecutar código cada vez que se sube un archivo.</p>
<h3><strong>Validación de Firma Compartida</strong></h3>
<p class="ds-markdown-paragraph">El archivo ZIP incluía un archivo <code>.signature</code> con una firma generada mediante un <strong>secreto compartido</strong>. Usé <strong>HMAC-SHA256</strong> para asegurar que el archivo no fuera alterado.</p>
<div class="md-code-block md-code-block-light">
<div class="md-code-block-banner-wrap">
<div class="md-code-block-banner md-code-block-banner-lite">
<div class="_121d384">
<div class="d2a24f03">
<div class="efa13877">
<div class="ds-button ds-button--secondary ds-button--borderless ds-button--rect ds-button--s _7db3914" tabindex="0" role="button"></div>
</div>
</div>
</div>
</div>
</div>
<pre><code class="language-python">import hmac
import hashlib
def validate_signature(secret_key, file_content, received_signature):
    generated_signature = hmac.new(secret_key.encode(), file_content, hashlib.sha256).hexdigest()
    return hmac.compare_digest(generated_signature, received_signature)</code></pre>
</div>
<h3><strong>3️⃣ Descompresión y Validación SHA-256</strong></h3>
<p class="ds-markdown-paragraph">Una vez validada la firma, el sistema descomprimía el archivo y verificaba cada archivo interno contra un hash predefinido.</p>
<div class="md-code-block md-code-block-light">
<pre><code class="language-python">import zipfile
import hashlib
def check_file_hash(file_path, expected_hash):
    with open(file_path, &quot;rb&quot;) as f:
        file_data = f.read()
        computed_hash = hashlib.sha256(file_data).hexdigest()
        return computed_hash == expected_hash</code></pre>
</div>
<h3><strong>4️⃣ Notificación y Manejo de Errores</strong></h3>
<p class="ds-markdown-paragraph">Si alguna validación fallaba, el sistema enviaba una alerta por <strong>Pub/Sub</strong> o <strong>Correo Electrónico</strong> para notificar al administrador.</p>
<h2><strong>📊 Resultados</strong></h2>
<p class="ds-markdown-paragraph">✅ <strong>Procesamiento automatizado y seguro</strong> sin intervención manual o humana.<br />
✅ <strong>Reducción de errores</strong> por archivos corruptos o no autorizados.<br />
✅ <strong>Escalabilidad</strong> gracias a Cloud Functions (pago por uso).</p>
<h2><strong>🚀 ¿Necesitas una Solución Similar?</strong></h2>
<p class="ds-markdown-paragraph">Si buscas automatizar procesos en la nube con <strong>GCP, AWS o Azure</strong>, puedo ayudarte a diseñar e implementar una solución robusta y segura.</p>
<p class="ds-markdown-paragraph">📩 <a href="https://webmago.dev/#contact"><strong>¡Contáctame y hablemos de tu proyecto!</strong></a></p>The post <a href="https://webmago.dev/mi-experiencia-con-google-cloud-functions-validacion-y-procesamiento-seguro-de-archivos/">Mi Experiencia con Google Cloud Functions: Validación y Procesamiento Seguro de Archivos</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>¡Descongela tu Desarrollo con Winter CMS! ❄️ Tu Entorno Docker Listo para la Acción</title>
		<link>https://webmago.dev/descongela-tu-desarrollo-con-winter-cms-%e2%9d%84%ef%b8%8f-tu-entorno-docker-listo-para-la-accion/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Fri, 09 May 2025 15:21:43 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[wintercms]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=5901</guid>
					<description><![CDATA[<p>¿Cansado de lidiar con configuraciones complejas y entornos de desarrollo inconsistentes? ¡Dile adiós al frío de la incertidumbre y da la bienvenida a Winter CMS, mi imagen Docker preconfigurada lista para potenciar tus proyectos! Hace apenas dos semanas, compartí contigo una herramienta que he estado afinando para simplificar tu flujo de trabajo. Winter CMS encapsula [&#8230;]</p>
The post <a href="https://webmago.dev/descongela-tu-desarrollo-con-winter-cms-%e2%9d%84%ef%b8%8f-tu-entorno-docker-listo-para-la-accion/">¡Descongela tu Desarrollo con Winter CMS! ❄️ Tu Entorno Docker Listo para la Acción</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p data-sourcepos="5:1-5:231">¿Cansado de lidiar con configuraciones complejas y entornos de desarrollo inconsistentes? ¡Dile adiós al frío de la incertidumbre y da la bienvenida a <strong>Winter CMS</strong>, mi imagen Docker preconfigurada lista para potenciar tus proyectos!</p>
<p data-sourcepos="7:1-7:288">Hace apenas dos semanas, compartí contigo una herramienta que he estado afinando para simplificar tu flujo de trabajo. <strong>Winter CMS</strong> encapsula un entorno de desarrollo robusto y eficiente, ahorrándote horas de configuración y garantizando la consistencia en cada paso de tu proceso creativo.</p>
<p data-sourcepos="9:1-9:26"><strong>¿Qué te ofrece Winter CMS?</strong></p>
<ul data-sourcepos="11:3-15:0">
<li data-sourcepos="11:3-11:158"><strong>Un entorno consistente:</strong> Olvídate de los &#8220;funciona en mi máquina&#8221;. Winter CMS asegura que todos los miembros de tu equipo trabajen en un ambiente idéntico.</li>
<li data-sourcepos="12:3-12:127"><strong>Ahorro de tiempo invaluable:</strong> Dedica tu energía a lo que realmente importa: ¡codificar! Winter CMS viene listo para usarse.</li>
<li data-sourcepos="13:3-13:151"><strong>Flexibilidad total:</strong> Adapta Winter CMS a tus necesidades específicas. Su diseño modular te permite integrar las herramientas que realmente utilizas.</li>
<li data-sourcepos="14:3-15:0"><strong>La base de mis servicios:</strong> Winter CMS no es solo una imagen Docker, es la demostración de mi compromiso con la eficiencia y la calidad en el desarrollo. Utilizo esta misma base para ofrecerte soluciones robustas y escalables.</li>
</ul>
<p><strong>¿Qué Versiones de Winter CMS se han liberado?</strong></p>
<ul>
<li>1.2.7 php 8.2 fpm</li>
<li>1.2.7 php 8.2 apache</li>
<li>1.2.7 php 8.1 fpm</li>
<li>1.2.7 php 8.1 apache</li>
<li>1.2.7 php 8.0 fpm</li>
<li>1.2.7 php 8.0 apache</li>
</ul>
<p><strong>¿Listo para experimentar la calidez de un desarrollo sin complicaciones?</strong></p>
<p><a href="https://webmago.dev/#contact">¡Quiero saber cómo Winter CMS puede impulsar mi próximo proyecto!</a></p>
<p data-sourcepos="20:1-20:228">Al hacer clic en el botón de arriba, podrás contactarme directamente para discutir tus necesidades y descubrir cómo mis servicios, basados en la eficiencia de herramientas como Winter CMS, pueden llevar tus ideas al siguiente nivel.</p>
<p data-sourcepos="22:1-22:202">Ya sea que necesites ayuda para optimizar tu flujo de trabajo, construir aplicaciones robustas o implementar soluciones escalables, estoy aquí para ofrecerte mi experiencia y las herramientas adecuadas.</p>
<p data-sourcepos="24:1-24:164"><strong>¡No esperes más para descongelar tu potencial! Explora Winter CMS en Docker Hub:</strong> <a class="ng-star-inserted" href="https://hub.docker.com/r/webmago/winter" target="_blank" rel="noopener">https://hub.docker.com/r/webmago/winter</a></p>The post <a href="https://webmago.dev/descongela-tu-desarrollo-con-winter-cms-%e2%9d%84%ef%b8%8f-tu-entorno-docker-listo-para-la-accion/">¡Descongela tu Desarrollo con Winter CMS! ❄️ Tu Entorno Docker Listo para la Acción</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Editores de Código en linea</title>
		<link>https://webmago.dev/editores-de-codigo-en-linea/</link>
		
		<dc:creator><![CDATA[webmago]]></dc:creator>
		<pubDate>Wed, 24 Feb 2021 00:00:23 +0000</pubDate>
				<category><![CDATA[development]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[moviles]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[visual studio code]]></category>
		<guid isPermaLink="false">https://webmago.dev/?p=767</guid>
					<description><![CDATA[<p>Desde hace mas de cinco años que hago home office, y con el auge de la pandemia de COVID-19 es necesario tener herramientas de acceso remoto en mi caso editores de código. &#160; He desarrollado código en diversos lenguajes y he tenido la necesidad que algún proyecto requiere de un ajuste o corrección y no [&#8230;]</p>
The post <a href="https://webmago.dev/editores-de-codigo-en-linea/">Editores de Código en linea</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></description>
										<content:encoded><![CDATA[<p>Desde hace mas de cinco años que hago home office, y con el auge de la pandemia de COVID-19 es necesario tener herramientas de acceso remoto en mi caso editores de código.</p>
<p>&nbsp;</p>
<p>He desarrollado código en diversos lenguajes y he tenido la necesidad que algún proyecto requiere de un ajuste o corrección y no cargo con una Laptop, quienes hacen senderismo me darán la razón que con el tiempo la carga puede ser agobiante y entre mas ligero transites mejor, por lo tanto, una tableta, datos móviles y la corrección puede ser realizada en cualquier lugar.</p>
<p>&nbsp;</p>
<p>Existen en el mercado varios proveedores para editar código en línea, algunos te ofrecen cuentas básicas gratuitas con un espacio de trabajo y pueden servirte para tu projecto personal, aquí te enlisto algunos de ellos.</p>
<p>&nbsp;</p>
<p>Estos te permiten crear espacios de trabajo</p>
<ul>
<li><a href="https://aws.amazon.com/cloud9/" target="_blank" rel="noopener noreferrer">AWS Cloud9</a> &#8211; $ 2.05 al mes en adelante.</li>
<li><a href="https://codeanywhere.com/" target="_blank" rel="noopener noreferrer">Codeanyhere</a> &#8211; $ 2.5 al mes en adelante.</li>
<li><a href="https://repl.it/" target="_blank" rel="noopener noreferrer">Repl.it</a> &#8211; Free, $7.00 (usuario), $ 35 (Team) al mes</li>
<li><a href="https://codesandbox.io/" target="_blank" rel="noopener noreferrer">Code Sandbox</a> &#8211; Free, $7.00 mes</li>
</ul>
<p>&nbsp;</p>
<p>Si solo quieres probar y aprender código:</p>
<ul>
<li><a href="https://www.online-ide.com/" target="_blank" rel="noopener noreferrer">Online IDE</a></li>
<li><a href="https://www.ideone.com/" target="_blank" rel="noopener noreferrer">IdeOne</a></li>
<li><a href="https://www.codechef.com/ide" target="_blank" rel="noopener noreferrer">Code Chef</a></li>
<li><a href="https://paiza.io/" target="_blank" rel="noopener noreferrer">Paiza</a></li>
<li><a href="https://ide.codingblocks.com/" target="_blank" rel="noopener noreferrer">Coding Blocks IDE</a></li>
</ul>
<p>&nbsp;</p>
<p>Si quieres trabajar con tu cluster Kubernetes</p>
<ul>
<li><a href="https://www.gitpod.io/" target="_blank" rel="noopener noreferrer">Gitpod</a></li>
</ul>
<p>&nbsp;</p>
<p>Si cuentas con un VPS de al menos 2 Cores CPU, 1 GB RAM puedes montarte tu <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">Visual Studio Code</a> en tu propio servidor y tener tu IDE web en algun dominio como https://idecode.webmago.dev, puedes hacerlo siguiendo el procedimiento de <a href="https://github.com/cdr/code-server/blob/master/docs/install.md" target="_blank" rel="noopener noreferrer">instalacion</a> o usar una <a href="https://hub.docker.com/search?q=codercom%2Fcode-server&amp;type=image" target="_blank" rel="noopener noreferrer">imagen</a> Docker .</p>
<p>&nbsp;</p>
<p>La implementacion de <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">Visual Studio Code</a> en un VPS me tomo menos de una hora; el pasado fin de semana estando fuera de oficina tuve que corregir un estilo en un sitio web y el contar ya con un editor en linea me ayudo para hacer la correccion y enviarla al repositorio y lanzar el procedimiento de CI/CD y ver el cambio solicitado por el cliente.</p>
<p>&nbsp;</p>
<p>En esta captura podras ver <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">Visual Studio Code</a> solicitandome la contraseña para acceder y empezar a trabajar.</p>
<div id="attachment_772" style="width: 1034px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-772" class="size-large wp-image-772" src="https://webmago.dev/buvytsan/2021/02/vscode-access-1024x494.png" alt="Visual Studio Code" width="1024" height="494" srcset="https://webmago.dev/buvytsan/2021/02/vscode-access-1024x494.png 1024w, https://webmago.dev/buvytsan/2021/02/vscode-access-300x145.png 300w, https://webmago.dev/buvytsan/2021/02/vscode-access-768x370.png 768w, https://webmago.dev/buvytsan/2021/02/vscode-access-1536x740.png 1536w, https://webmago.dev/buvytsan/2021/02/vscode-access-2048x987.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-772" class="wp-caption-text">Acceder usando contraseña</p></div>
<p>&nbsp;</p>
<p>En esta otra captura podras ver la pantalla clasica de bienvenidad de <a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">Visual Studio Code</a>.</p>
<div id="attachment_773" style="width: 1034px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-773" class="size-large wp-image-773" src="https://webmago.dev/buvytsan/2021/02/vscode-welcome-1024x594.png" alt="Visual Studio Code" width="1024" height="594" srcset="https://webmago.dev/buvytsan/2021/02/vscode-welcome-1024x594.png 1024w, https://webmago.dev/buvytsan/2021/02/vscode-welcome-300x174.png 300w, https://webmago.dev/buvytsan/2021/02/vscode-welcome-768x446.png 768w, https://webmago.dev/buvytsan/2021/02/vscode-welcome-1536x891.png 1536w, https://webmago.dev/buvytsan/2021/02/vscode-welcome-2048x1188.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><p id="caption-attachment-773" class="wp-caption-text">Pantalla de Bienvenida</p></div>
<p>&nbsp;</p>
<p>Si requieres de mi ayuda para montar tu propio IDE online en tu VPS <a href="https://webmago.dev/#contact">contactame</a>.</p>The post <a href="https://webmago.dev/editores-de-codigo-en-linea/">Editores de Código en linea</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Integrando SonarQube en pipelines CI/CD de Codefresh</title>
		<link>https://webmago.dev/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[<p>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;]</p>
The post <a href="https://webmago.dev/integrando-sonarqube-en-pipelines-ci-cd-de-codefresh/">Integrando SonarQube en pipelines CI/CD de Codefresh</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></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 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 loading="lazy" 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="auto, (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 loading="lazy" 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="auto, (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>The post <a href="https://webmago.dev/integrando-sonarqube-en-pipelines-ci-cd-de-codefresh/">Integrando SonarQube en pipelines CI/CD de Codefresh</a> first appeared on <a href="https://webmago.dev">Webmago Dev</a>.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
