¿Cuál es mejor: Bamboo o Jenkins CI?

Estoy utilizando bambú ahora, he configurado Jenkins CI en un par de organizaciones diferentes en el pasado y me gusta mucho Jenkins.

Algunas percepciones que tengo

Jenkins

1. Popular de código abierto, fácil de descubrir complementos para. (Por ejemplo, hay un complemento de Testswarm para Jenkins, y tuve que componer mi propio arreglo particular de fabricación de scripts para hacer lo mismo en bambú, dado que no existía un complemento)

2. Fácil de descubrir diferentes clientes y obtener ayuda sobre Jenkins.

3. Gratis, y fácil de configurar

4. No realiza estiramientos / combinaciones programados.

Bambú

1. Admite el estiramiento y la combinación programados (Esta es la razón fundamental por la que mi organización actual utiliza Bamboo, ya que necesitamos ramificar naturalmente los arreglos de CI y asegurar que todas nuestras sucursales de desarrollo estén protegidas por CI, en Jenkins, cada sucursal y consolidación implica que deberíamos Necesito duplicar y reconfigurar cada arreglo)

2. Se integra bien con el resto de la suite Atlassian. Así que, en el caso de que utilices a Jira para los errores y la administración de la historia, y la intersección para la documentación, es difícil conseguir que el bambú cierre automáticamente las historias / errores a medida que se envían, y revisa la documentación de la conjunción con cada historia final.

3. Tiene algunos accesorios extravagantes geniales como reconocer si un arreglo está ahora detenido. (Mirándolo en contra de un límite de tiempos de fabricación de formas pasadas, como si un ensamblaje estuviera tomando la mitad más para fabricar la última forma fructífera)

4. Se trata de complementos esquivos para asignaciones o configuraciones no regulares. (Por ejemplo, no pude descubrir un complemento TestSwarm para Bamboo)

5. Es menos conocido que Jenkins. Difícil de descubrir diferentes clientes para hablar, comprar o pedir ayuda.

Me gusta más el bambú. Sea como sea, cuando tengo que componer scripts de formularios personalizados confusos con el argumento de que no existe un complemento. En ese momento me gustaría tener a Jenkins. Sin embargo, creo que el respaldo de bifurcación / fusión automática hace que Bamboo sea un proceso de trabajo mucho más agradable para los ingenieros.

He usado Jenkins y Bamboo recientemente. Creo que Jenkins es mucho mejor como una herramienta de CI independiente. Jenkins tiene la comunidad más vibrante y tiene una gran cantidad de complementos para hacer casi cualquier cosa que quieras. Además de su código abierto y de uso gratuito. No tomará demasiado esfuerzo entender todo lo que necesita saber acerca de Jenkins para configurar Jenkins para sus construcciones.

Sin embargo, hay una ventaja distinta cuando se utiliza Bamboo. Si ya está utilizando productos Atlassian como Jira, alijo, etc., entonces tiene sentido usar Bamboo. El bambú se integrará estrechamente con otros productos en el ecosistema de Atlassian. Como tal, si ha invertido en el ecosistema de producto de Atlassian, Bamboo le conviene más. Si quieres una herramienta de CI independiente, ve por Jenkins.

Aquí está nuestro gráfico que utilizamos internamente en TestGrid.io:

En TestGrid.io, la mayoría de nuestros clientes prefieren a Jenkins por su solidez y apoyo de la comunidad. Depende de sus necesidades exactas, y esperamos que nuestra mesa lo ayude a tomar su decisión.

Tl; dr. Jenkins si tiene un presupuesto limitado y solo necesita una integración continua simple; Bamboo, si tiene un poco más de dinero para gastar y desea hacer una entrega / implementación continua.

Utilicé a Jenkins durante muchos años, y aún lo recomendaría a cualquiera para quien la Integración Continua simple sea suficiente. Donde comencé a toparme con las limitaciones de Jenkins fue en el punto en el que quería evolucionar más allá de la Integración Continua hacia la Entrega Continua.

En 2013, la vista de Jenkins de las tuberías era absolutamente horrible … nunca fue fácil ver la estructura de una tubería de un vistazo; lo mejor que obtendrías es una representación visual después de que se haya ejecutado. Además, aunque podría expandirse con relativa facilidad, no había una manera igualmente fácil de volver a incorporarse, un componente clave de las tuberías de entrega continua. Luego vino el plugin experimental “Flow”, un proyecto de MIT con soporte informal que le permitió “codificar” tuberías en secuencias de comandos de estilo groovy. Personalmente, me encantó esto, pero ninguno de nuestros desarrolladores estaba dispuesto a dominarlo, por lo que terminamos teniendo que formar un equipo de “autores de canalizaciones” para respaldar al equipo de desarrollo. Gran trabajo si puedes conseguirlo, supongo.

A finales de 2014, asistí a una presentación del mismo Kohsuke en Cloudbees Jenkins y, he aquí, uno de los puntos de venta de esta versión tan cara de Jenkins fue el “Workflow Plugin” que se parecía mucho al “Flow Plugin”. Yo había utilizado anteriormente. Nuevamente, el diseño es tal que usted diseña la tubería en un guión maravilloso, pero solo obtiene una representación visual * después * de ejecutar dicha tubería. Peor aún, con todo el dinero de esta licencia, el 95% del producto de Jenkins que usaríamos era el mismo producto OpenSource que puede obtener gratis … con todos sus defectos. Aún depende en gran medida de los complementos desarrollados y mantenidos por los aficionados … el soporte para dichos complementos es extremadamente variable, y no hay garantía de que los complementos sean compatibles entre sí. Tuvimos muchos problemas en los que queríamos actualizar el núcleo, pero descubrimos que algunos complementos se rompieron … o incluso necesitábamos actualizar un único complemento para obtener una solución, solo para encontrar que la actualización rompió varias características en los otros complementos de los que dependíamos .

Ahora, Bamboo no es en absoluto perfecto, y tiene una serie de limitaciones, pero sus beneficios clave (en mi opinión y experiencia) son:

  • Interfaz de usuario sencilla e intuitiva de arrastrar y soltar para diseñar tuberías, basada en las mismas tareas, trabajos y principios de la entrega continua. Ventilar hacia fuera / adentro es trivial.
  • Deshabilitar / reordenar temporalmente una Etapa, Trabajo o Tareas es trivial. Los trabajos se pueden arrastrar / soltar entre Etapas, Las etapas y Las tareas se pueden arrastrar / soltar para reordenar, con advertencias emergentes si lo que está a punto de hacer no tiene sentido.
  • También es posible encadenar tuberías, aunque no sea tan resbaladizo como GoCD; sin embargo, admitiré fácilmente que este es uno de los puntos más débiles de Bamboo.
  • Un administrador de implementación independiente, en el que puede administrar fácilmente los entornos de implementación, hacer un seguimiento de lo que ha liberado y dónde, y la trazabilidad completa desde un lanzamiento de regreso a los compromisos Git y los problemas de JIRA que incluye.
  • Detecta automáticamente nuevas sucursales y las construye. Incluso es posible (aunque a través de un complemento muy económico) que la misma tubería se comporte de manera diferente en una construcción de rama.
  • Los artefactos de construcción se gestionan automáticamente a través de cada ejecución de canalización, hasta el despliegue; No es necesario escenificar artefactos en un repositorio externo.
  • La integración con otros productos de Atlassian es, como usted esperaría, muy superior a otras combinaciones que pueda imaginar.

Realmente queríamos que los desarrolladores de sistemas estuvieran encantados de usarlo, con un mantenimiento mínimo. 2 años después, todavía tengo que escuchar una crítica de bambú. Donde hemos encontrado limitaciones, hemos encontrado a Atlassian extremadamente útil en soluciones de sugerencias.

Yo todavía no he experimentado Jenkins 2.0, pero he recibido comentarios mixtos de otros profesionales independientes. También tengo en cuenta que el Radar de tecnología de Thoughtworks clasifica a Jenkins (incluido 2.0) “Hold”, que significa “Continuar con precaución”. La explicación de por qué suena ciertamente cierta para mí: Technology Radar | Tendencias de las tecnologías emergentes para 2016 | ThoughtWorks

Finalmente … ¿seguiría eligiendo Bamboo, dados los excelentes recién llegados recientes a la escena de la entrega continua? Posiblemente no; sin embargo, cualquier herramienta de reemplazo no debe requerir una torre de marfil separada de “Administradores de construcción” que actúa como un cuello de botella en el proceso de desarrollo.

Jenkins , originalmente fundada en 2006 como “Hudson”, es el principal servidor de integración continua de código abierto . Con una arquitectura extensible y basada en complementos, los desarrolladores han creado más de 300 complementos para adaptar a Jenkins a una multitud de cargas de trabajo de automatización de compilación, prueba y despliegue. En 2015, Jenkins superó las 100,000 instalaciones conocidas, lo que lo convierte en el servidor de automatización más implementado .

El bambú de Atlassian es otra excelente opción para la integración, implementación y entrega continuas. Le permite crear planes de compilación de varias etapas , configurar desencadenadores para iniciar compilaciones tras realizar confirmaciones y asignar agentes a sus compilaciones e implementaciones críticas.

Ahora hay muchas herramientas móviles de integración continua que lo ayudan a automatizar el proceso y muchas razones por las que debería invertir en una, incluida la reducción de errores , errores , riesgos de refactorización y costos de defectos, así como un aumento general de la velocidad. de su desarrollo a los ciclos de despliegue. También hay varias cosas que deberían tomar en cuenta su decisión sobre cuál de las herramientas de integración continua debería usar, incluidas las características , el alojamiento , el soporte , las integraciones proporcionadas, los precios y más.

Al final, todo se reduce a lo que mejor se adapte a sus necesidades. Consulte la publicación de un blog a continuación para obtener una lista de las principales herramientas de integración continua móvil para elegir.

Las mejores herramientas de integración continua móvil (CI / CD) en 2018

La comunidad de usuarios reales en nuestro sitio, la Estación Central de TI, tiene algunas respuestas interesantes a esa pregunta. A medida que realiza su investigación sobre estas herramientas, puede resultarle útil ver lo que otros usuarios dicen acerca de Jenkins y otras herramientas de CI, y cuáles obtienen las mejores revisiones.
Aquí hay algunos extractos útiles:

Jenkins vs. TeamCity : “La mayor diferencia en la inspección inicial es que TeamCity está mucho más enfocado en validar los compromisos individuales en lugar de ciertos tipos de pruebas. La página principal de Jenkins presenta información que simplemente no es útil en un entorno de desarrollo no lineal, donde la gente a menudo trabaja en direcciones muy diferentes. Generalmente, TeamCity me parece mucho más intuitivo que Jenkins fuera de la caja “. Lea el resto de la revisión aquí: Revisión de Jenkins vs. TeamCity

Otro crítico comparó Travis contra Bamboo contra Jenkins / Hudson : “Mis preferencias por Jenkins y Travis sobre Hudson y Bamboo se basan más en detalles que en grandes diferencias. Uno no puede decir que ninguno de ellos es claramente mejor que el otro. A menudo es una cuestión de elección personal, tipo de proyecto o a lo que estamos acostumbrados. Para los nuevos proyectos, Travis es mi favorito y lo uso ampliamente “. Lea el resto de esta comparación informativa aquí: Revisión de Jenkins vs. Travis vs. Bamboo

Por último, otro crítico escribe sobre Jenkins que es una “comunidad de código abierto con muchos complementos y flexibilidad como plataforma de automatización. Mejoras en Mi organización: en lugar de enviar correos electrónicos y tickets, podemos entregar” botones “a los equipos para que puedan hacerlo por sí mismos. -servicio de acciones que solían involucrar el esfuerzo manual del grupo de Operaciones “. Lea la revisión completa de Jenkins aquí: Revisión de Jenkins

Eso debería ayudar a su investigación – ¡buena suerte!

La elección entre dos depende de muchos factores. Algunos de los más importantes se enumeran a continuación:

  • El tamaño del proyecto en términos de LOC y complejidad.
  • El tamaño del equipo es decir, colaboradores / desarrolladores.
  • La herramienta de compilación utilizada para construir su proyecto Por ejemplo: Maven, Gradle, Ant, etc.
  • La herramienta de control de fuente preferida, por ejemplo: IBM Clearcase, Subversion, Git, etc.
  • La elección de un repositorio central de artefactos (si existe) Ej .: Nexus, Artifactory, etc.
  • La elección del código de calidad / herramienta de análisis, por ejemplo: Sonarqube

Considere todas las opciones de los factores anteriores y verifique si Jenkins o Bamboo admiten la integración con ellos. Mucho depende de la naturaleza del proyecto y de si lo estás empezando desde cero o si ya estás en medio (y cuánto esperas que florezca y florezca). También considere la facilidad de migración de una herramienta a otra, lo que podría ocurrir en el futuro. Las elecciones que realice aumentarán los costos generales y determinarán sus decisiones. Mis 2 centavos. Espero eso ayude. Ciao!

Ambos programas te ayudarán a hacer el trabajo. Todo se reduce a precio y soporte. Jenkins es gratis para cualquier número de agentes y trabajos, mientras que el bambú se paga. Pero, por otro lado, el bambú está hecho a medida para empresas y si utiliza los otros productos Atlassin, estará satisfecho con la consistencia del diseño.

He estado usando Jenkins durante casi tres años. Estoy considerando una actualización a Bamboo ya que mi empresa ha crecido y recientemente comenzó a usar Atlassin Stash y deseo la misma experiencia de usuario en todas las herramientas que usamos.

Esta pregunta ha existido por un tiempo, pero aquí hay información actualizada. Bamboo está en proceso de ser EOL’d, también conocido como apagado. (Documentación atlassiana).

Alternativas como CircleCI (mi empleador), Travis CI, CodeShip, etc. serían mucho mejores para comparar.

Estuvimos en Jenkins por bastante tiempo, pero el uso era bastante primitivo. Un proyecto simple de estilo libre que hizo pruebas unitarias. La cantidad de complementos alrededor de esto es bastante grande, especialmente las cosas alrededor de los activadores de git. Con alguna dificultad uno puede hacer que trabajen.

Nuestro dolor comenzó cuando queríamos instalar tuberías. A pesar de pasar a la última versión de jenkins 2.0 a 2.6, nos dimos cuenta de lo roto que está jenkins para respaldar la tubería como un concepto de primera clase. Los complementos populares de git en jenkins no admiten tuberías de forma predeterminada. En un poco de una mirada más profunda de por qué, nos dimos cuenta de que no hay ninguna coherencia infraestructural en los esquemas de trabajo (config.xml), por lo que cada nuevo tipo de trabajo requiere que el complemento tenga que encontrar su camino. Eso no es esencialmente un buen diseño. Así que al perder toda la flexibilidad de los complementos en jenkins al usar tuberías, decidimos usar los jenkins de plataforma descubierta con el soporte de activación más básico. Resultó que jenkins hace algunas cosas divertidas con la carga útil json cuando se accede dentro de la tubería, casi haciéndola inutilizable (a menos que tenga una cantidad significativa de tiempo para piratear, lo que jenkins permite perfectamente).

Hemos renunciado a Jenkins, ya que queremos usar tuberías. Abriéndonos camino a través de go.cd, que se ve mucho más estructurado y correcto para una entrega continua canalizada. Sin embargo, me gustaría que todavía haya mucho más margen para que las herramientas de CD y CI de código abierto puedan mejorar.

Tal vez mi respuesta sobre cómo encontrar la mejor solución de CI para usted podría ayudar: ¿es jenkins la mejor herramienta de CI?