{"id":2238,"date":"2014-02-18T09:00:42","date_gmt":"2014-02-18T09:00:42","guid":{"rendered":"http:\/\/www.fractaliasystems.com\/1868-revision-v1\/"},"modified":"2023-10-11T09:44:00","modified_gmt":"2023-10-11T09:44:00","slug":"servidores-de-integracion-continua-bamboo-jenkis-22","status":"publish","type":"post","link":"https:\/\/fractaliasystems.com\/en\/servidores-de-integracion-continua-bamboo-jenkis-22\/","title":{"rendered":"Servidores de Integraci\u00f3n Continua. Bamboo&#038; Jenkis (2\/2)"},"content":{"rendered":"<p>Continuando con el an\u00e1lisis comparativo \u00a0entre Bamboo y Jenkins (servidores de Integraci\u00f3n Continua), analizando ahora los escenarios:<\/p>\n<ul>\n<li>Ejecuci\u00f3n de Test Unitarios<\/li>\n<li>Ejecuci\u00f3n de m\u00e9tricas software<\/li>\n<li>Despliegues autom\u00e1ticos y pruebas de integraci\u00f3n<\/li>\n<li>Notificaci\u00f3n de resultados<\/li>\n<li>Otros puntos de inter\u00e9s<!--more--><\/li>\n<\/ul>\n<ol start=\"1\">\n<li><b><span style=\"text-decoration: underline;\">Ejecuci\u00f3n de Test Unitarios<\/span><\/b><\/li>\n<\/ol>\n<p>El objetivo de estos test es comprobar la integraci\u00f3n del sistema con los distintos m\u00e9todos de ejecuci\u00f3n de pruebas unitarias para .NET: MSTests, NUnit o tecnolog\u00eda similar. Las conclusiones obtenidas son:<\/p>\n<p><i>Bamboo<\/i><\/p>\n<p>Para pruebas .NET Bamboo dispone de integraci\u00f3n con varias herramientas:<\/p>\n<ul>\n<li>Runners (permiten la ejecuci\u00f3n de la herramienta externa de forma integrada): MSTest y NUnit.<\/li>\n<li>Parsers (permiten la visualizaci\u00f3n de los datos generados por la herramienta): MBUnit, MSTest, NUnit,<\/li>\n<\/ul>\n<p>Para otros lenguajes de programaci\u00f3n se han encontrado: JUnit, PHPUnit y TestNG.<\/p>\n<p>En la siguiente figura puede verse un ejemplo de ejecuci\u00f3n de tests unitarios:<\/p>\n<p><a href=\"http:\/\/fractaliasystems.com\/wp-content\/uploads\/Test-unitarios-con-Bamboo.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-195 alignnone\" src=\"http:\/\/fractaliasystems.com\/wp-content\/uploads\/Test-unitarios-con-Bamboo-1024x819.png\" alt=\"Ejemplo de test unitarios don Bamboo\" width=\"604\" height=\"483\" \/><\/a><\/p>\n<p><i>Jenkins<\/i><\/p>\n<p>Para pruebas de desarrollos en .NET disponemos de integraci\u00f3n con al menos las siguientes herramientas: MSTest, VSTest, NUnit.<\/p>\n<p>Para otros lenguajes de programaci\u00f3n y herramientas de automatizaci\u00f3n se han encontrado numerosos plugins, desde JUnit y PHPUnit, hasta herramientas para entornos web (ejp: Selenium) e incluso para plataformas m\u00f3viles (Android, iOS)<\/p>\n<p>En la siguiente figura puede verse un ejemplo de ejecuci\u00f3n de tests unitarios:<\/p>\n<p><a href=\"http:\/\/fractaliasystems.com\/wp-content\/uploads\/test-unitarios-con-Jenkins.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-196 aligncenter\" src=\"http:\/\/fractaliasystems.com\/wp-content\/uploads\/test-unitarios-con-Jenkins-1024x493.png\" alt=\"Ejemplo de test unitarios con Jenkins\" width=\"604\" height=\"290\" \/><\/a><\/p>\n<ol start=\"2\">\n<li><b><span style=\"text-decoration: underline;\">Ejecuci\u00f3n de m\u00e9tricas software<\/span><\/b><\/li>\n<\/ol>\n<p>Hemos analizado la posibilidad de ejecutar m\u00e9tricas de calidad de software (C#, .NET) e incluirlas dentro del proceso de compilaci\u00f3n: VS Code Metrics, Resharper, etc. Los resultados obtenidos son:<\/p>\n<p><i>Bamboo<\/i><i><\/i><\/p>\n<p>No se han encontrado add-ons con esta funcionalidad.<\/p>\n<p>Atlassian tiene una herramienta de an\u00e1lisis de c\u00f3digo (Clover), aunque parece v\u00e1lida s\u00f3lo para Java y Groovy.<\/p>\n<p><i>Jenkins<\/i><i><\/i><\/p>\n<p>Dispone de un plugin para la ejecuci\u00f3n de \u201cVisual Studio Code Metrics PowerTool\u201d. Representa las m\u00e9tricas generadas por el visual estudio. Son m\u00e9tricas muy sencillas pero pueden ser de utilidad como visi\u00f3n general de un proyecto.<\/p>\n<p><a href=\"http:\/\/fractaliasystems.com\/wp-content\/uploads\/m\u00e9tricas-software-con-Jenkins.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-197 aligncenter\" src=\"http:\/\/fractaliasystems.com\/wp-content\/uploads\/m\u00e9tricas-software-con-Jenkins-1024x819.png\" alt=\"Ejemplo de m\u00e9tricas software con Jenkins\" width=\"604\" height=\"483\" \/><\/a><\/p>\n<p>En esta misma l\u00ednea podr\u00eda ser interesante el estudio del plugin <a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Sonargraph+Plugin\">Sonargraph Plugin<\/a>, que parece analizar la arquitectura de una aplicaci\u00f3n de forma autom\u00e1tica.<\/p>\n<ol start=\"3\">\n<li><b><span style=\"text-decoration: underline;\">Despliegues autom\u00e1ticos y pruebas de integraci\u00f3n<\/span><\/b><\/li>\n<\/ol>\n<p>En este punto hemos estudiado la posibilidad de ejecutar\/restaurar m\u00e1quinas virtuales desde el propio CI para automatizar los despliegues y posibles pruebas de integraci\u00f3n.<\/p>\n<p>Las pruebas de integraci\u00f3n con VMWare no han podido realizarse debido a que las versiones de los ESXI instalados en desarrollo parecen no tener la funcionalidad por ser de licencia gratuita.<\/p>\n<p><i>Bamboo<\/i><\/p>\n<p>Dispone del plugin Bamboo VMWare Plugin (gratis sin agentes remotos) con el que se pueden gestionar m\u00e1quinas virtuales: arrancar, parar, seleccionar snapshot, etc.<\/p>\n<p>No se han encontrado plugins adiconales.<\/p>\n<p><i>Jenkins<\/i><\/p>\n<p>Existen diferentes plugins para la gesti\u00f3n de m\u00e1quinas virtuales: VMware, VirtualBox, Proxmox y el framework Vagrant<\/p>\n<p>La mayor\u00eda de estos plugins est\u00e1n pensados para montar m\u00e1quinas virtuales como m\u00e1quinas secundarias (slaves) de Jenkins, pero disponen de la funcionalidad necesaria para gestionarlas: arrancar, parar, seleccionar snapshot, etc.<\/p>\n<ol start=\"4\">\n<li><b><span style=\"text-decoration: underline;\">Notificaci\u00f3n de resultados.<\/span><\/b><\/li>\n<\/ol>\n<p>Por \u00faltimo, hemos querido analizar qu\u00e9 tipo de notificaciones ponen a nuestra disposici\u00f3n ambos sistemas, tanto al env\u00edo de correos, mensajer\u00eda como en lo relativo a la integraci\u00f3n con las herramientas ya utilizadas en el departamento (Jira, Bugzilla, etc.)<\/p>\n<p><i>Bamboo<\/i><\/p>\n<p>La instalaci\u00f3n b\u00e1sica de Bamboo nos permite incluir notificaciones mediante email y mensajer\u00eda instant\u00e1nea.<\/p>\n<p>Adicionalmente nos permite integrarnos f\u00e1cilmente con otros productos de Atlassian, como JIRA, donde nos permite la asociaci\u00f3n de planes de compilaci\u00f3n y despliegue a releases, issues, etc.<\/p>\n<p><i>Jenkins<\/i><\/p>\n<p>Igual que en el caso anterior, Jenkis nos permite configurar las notificaciones para utilizar un servidor de correo, disponiendo adem\u00e1s de plugins para la integraci\u00f3n con JIRA y Bugzilla.<\/p>\n<ol start=\"5\">\n<li><b><span style=\"text-decoration: underline;\">Otros puntos de inter\u00e9s<\/span><\/b><\/li>\n<\/ol>\n<p><i>Consumo de recursos<\/i><\/p>\n<p>Uno de los aspectos que nos ha parecido interesante resaltar en este post, es el consumo de recursos de ambos servidores. Aunque ambas herramientas presentan una ejecuci\u00f3n limpia y sin retardos, Bamboo parece requerir m\u00e1s memoria para su funcionamiento, consumiendo nada m\u00e1s ser arrancado 500 MB de memoria frente a los 100 MB de Jenkins.<\/p>\n<p><i>Mantenimiento, actualizaciones, etc.<\/i><\/p>\n<p>En cuanto al mantenimiento, actualizaciones e instalaci\u00f3n de plugins o add-ons, ambas herramientas se comportan de una forma muy similar, siendo muy sencilla su instalaci\u00f3n y actualizaci\u00f3n, la cual se realiza directamente desde el entorno web.<\/p>\n<p><i>Proyectos entornos m\u00f3viles.<\/i><\/p>\n<p>En los puntos anteriores nos hemos centrado en la realizaci\u00f3n de un proyecto .NET basado en herramientas Microsoft. Resulta de inter\u00e9s el an\u00e1lisis de ambos servidores en lo relativo a la compilaci\u00f3n de proyectos destinados a otros entornos, en particular <b>iOS y Android<\/b>.<\/p>\n<p>En este punto Bamboo pone a nuestra disposici\u00f3n un add-on para la compilaci\u00f3n de aplicaciones Cocoa e iOS, sin embargo no se han encontrado utilidades para proyectos Android.<\/p>\n<p>Por otro lado, Jenkins s\u00ed nos ofrece una amplia variedad de plugins, tanto para proyectos Android como iOS: Android Emulator, Appaloosa, iOS Device Connector, etc.<\/p>\n<p>En los puntos anteriores se ha realizado un an\u00e1lisis de ambas herramientas para las necesidades particulares que tenemos, Siendo ambas herramientas perfectamente v\u00e1lidas, se ha intentado dar una visi\u00f3n lo m\u00e1s objetiva posible,<\/p>\n<p>Esperamos haber conseguido esta imparcialidad, aunque, como os podr\u00e9is imaginar, despu\u00e9s de utilizar ambas herramientas durante un tiempo siempre surgen preferencias.. Pero lo importante es: \u00bfCu\u00e1l elegir\u00edas t\u00fa?<\/p>\n<p><a href=\"http:\/\/fractaliasystems.com\/wp-content\/uploads\/JenkinsBamboo.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-198 aligncenter\" src=\"http:\/\/fractaliasystems.com\/wp-content\/uploads\/JenkinsBamboo.jpg\" alt=\"Jenkins&amp;Bamboo\" width=\"280\" height=\"264\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Continuando con el an\u00e1lisis comparativo \u00a0entre Bamboo y Jenkins (servidores de Integraci\u00f3n Continua), analizando ahora los escenarios: Ejecuci\u00f3n de Test Unitarios Ejecuci\u00f3n de m\u00e9tricas software Despliegues autom\u00e1ticos y pruebas de integraci\u00f3n Notificaci\u00f3n de resultados Otros puntos de inter\u00e9s<br \/><a href=\"https:\/\/fractaliasystems.com\/en\/servidores-de-integracion-continua-bamboo-jenkis-22\/\" class=\"more\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":2239,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-2238","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-it-fractalia"],"_links":{"self":[{"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/posts\/2238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/comments?post=2238"}],"version-history":[{"count":1,"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/posts\/2238\/revisions"}],"predecessor-version":[{"id":7189,"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/posts\/2238\/revisions\/7189"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/media\/2239"}],"wp:attachment":[{"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/media?parent=2238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/categories?post=2238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fractaliasystems.com\/en\/wp-json\/wp\/v2\/tags?post=2238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}