Header Ads Widget

Ticker

6/recent/ticker-posts

Llegue a DevOps Zen con estas herramientas de integración continua

 

Alcance-DevOps-Zen-con-estas-herramientas-de-integración-continua

La Integración Continua (CI) es una parte del proceso de DevOps que tiene como objetivo integrar el código escrito por un equipo de desarrolladores. Esto implica construir el código junto con las dependencias, probarlo con un conjunto preparado de conjuntos de pruebas de integración y unidad, y crear informes que enumeren los artefactos resultantes.

Al realizar pruebas periódicas en el código en su totalidad, detectar regresiones desde el principio y producir artefactos estables en los que basar versiones futuras del código, CI ayuda a evitar perder tiempo tratando con conflictos en el código en el que los equipos están colaborando. Es por eso que muchos lo consideran la piedra angular del desarrollo de software ágil .

CI está estrechamente relacionada con la idea de Entrega continua , en la que las compilaciones exitosas que resultan del proceso de integración continua se implementan en entornos de ensayo o incluso de producción a intervalos regulares. CI se ha convertido en uno de los pilares de la ingeniería de software moderna, y todos los equipos de desarrollo serios han establecido una de las muchas soluciones de CI disponibles para acelerar sus esfuerzos comunes.

Dado que la creación de código y la ejecución de pruebas suelen ser procesos que consumen muchos recursos, los equipos eliminaron rápidamente los servidores de CI locales en favor de los productos SaaS basados ​​en la nube . En los últimos años, la construcción y prueba local de código ha dado paso a la integración continua impulsada por API . A medida que las tecnologías DevOps han evolucionado últimamente, las empresas de software detrás de cada una de las principales herramientas de CI también han tenido que adaptarse a ellas.

Profundicemos en lo que algunos de ellos han estado haciendo y luego examinemos las tendencias modernas en la integración continua.

CI tradicional

Aunque CruiseControl fue la primera herramienta formal de integración continua, Jenkins fue la primera en obtener una adopción generalizada. Fue construido en Java y de código abierto en 2004 por un desarrollador de Sun Microsystems llamado Kohsuke Kawaguchi (Jenkins es la bifurcación más grande del proyecto Hudson).

Con Jenkins, los desarrolladores pueden configurar un flujo de trabajo para extraer su código de un repositorio de control de versiones como Subversion , Git o Mercurial , y activar compilaciones de código, ejecuciones de prueba e implementaciones cada vez que se actualiza la línea principal del repositorio .

Jenkins sigue siendo una de las herramientas de integración continua más populares del mercado. Si bien inicialmente solo estaba destinado a admitir Java, legiones de desarrolladores han contribuido con complementos para muchos otros lenguajes.

Para un equipo de desarrollo moderno, el principal punto de venta a favor de Jenkins, más allá de la opción de un servidor de compilación en las instalaciones, es su flexibilidad . Si bien su curva de aprendizaje es algo más larga que con los productos de CI alojados, Jenkins se puede personalizar para adaptarse a cualquier flujo de trabajo de DevOps .

Inicialmente, Jenkins solo estaba disponible como local, pero varios jugadores en la nube han creado soluciones SaaS basadas en Jenkins. En particular, CloudBees , una empresa que anteriormente ofrecía alojamiento PaaS para aplicaciones Java y Scala, contrató recientemente a Kawaguchi y cambió para centrarse en su oferta de Jenkins basada en la nube.

Jenkins a menudo se compara con TeamCity por JetBrains, otra herramienta de CI tradicionalmente local basada en Java, y Bamboo de Atlassian , que puede ser local o alojado en Amazon EC2 y presenta una integración profunda con otros productos de Atlassian como JIRA , Bitbucket y HipChat .

Los conjuntos de pruebas dentro de los flujos de trabajo de integración continua han evolucionado con el tiempo. Inicialmente, solo se incluyeron pruebas unitarias , probando objetos individuales y componentes de software de forma aislada. Si bien esto ya era mucho mejor que nada, solo la ejecución de pruebas unitarias podría dejar fuera problemas en la comunicación entre componentes. Entonces nació la prueba de integración automatizada para mitigar estos riesgos, pero aún no era suficiente para cubrir todas las bases. De hecho, incluso las pruebas de integración no cubrieron los problemas que podría encontrar el usuario final al navegar por una GUI o una página web.

Las pruebas funcionales , que anteriormente eran dominio exclusivo de los probadores manuales, se han convertido en un juego justo para la automatización. Los equipos comenzaron a usar herramientas como HTTPUnit y Selenium para registrar el comportamiento de navegación y luego reproducir las pruebas cada vez que se creaba una nueva compilación.

La integración continua también permite a los equipos vincular versiones de software con características y errores al incluir identificadores de problemas de herramientas de seguimiento de errores en los metadatos de compilación. De esta manera, los gerentes de proyecto pueden seguir el progreso de la salida del flujo de trabajo de CI.

CI en la nube

Avance rápido hasta 2011, y muchos equipos de desarrollo estaban cansados ​​de autohospedar su propio sistema de integración continua, ya que configurarlo a menudo resultaba costoso en tiempo y recursos, tiempo que podría emplearse mejor trabajando en aplicaciones. Las soluciones SaaS proliferaron rápidamente para llenar este vacío en el mercado.

Travis CI es un servicio de integración continua alojado construido sobre la API de GitHub . Permite a los equipos de desarrollo construir cualquier proyecto, siempre que el código esté alojado en GitHub. Travis reacciona a los desencadenantes dentro de un repositorio de GitHub, como una confirmación o una solicitud de extracción, utilizando webhooks para iniciar tareas como la creación de una base de código. Utiliza GitHub no solo para obtener el código, sino también para autenticar usuarios y organizaciones.

Los equipos que utilizan soluciones basadas en la nube como GitHub y Travis CI para el control de versiones y CI ya no enfrentan los dolores de cabeza de administrar estas herramientas ellos mismos como era necesario hace solo unos años. Además, dado que todas las acciones tanto en Travis CI como en GitHub se pueden activar a través de sus respectivas API, este flujo de trabajo puede estar completamente impulsado por API .

Otra ventaja de las soluciones de CI alojadas es que pueden proporcionar instalaciones de prueba mucho más amplias Las pruebas del navegador y del sistema operativo solían ser un asunto tedioso: las estaciones de trabajo y el personal tenían que estar dedicados a garantizar que los errores no aparecieran en un entorno determinado. Por el contrario, una solución alojada puede mantener un conjunto de servidores basados ​​en la nube con una configuración diferente para este propósito. Travis permite realizar pruebas en entornos Linux, Windows y Mac. Travis CI admite una variedad de lenguajes de programación como PHP, Ruby, Node.js, Scala, Go, C y Clojure. Ahora admite repositorios públicos y privados, pero tradicionalmente se asociaba con software de código abierto: la versión gratuita de Travis CI es en sí misma un proyecto de código abierto alojado en GitHub .

Las herramientas similares que existen incluyen:

  • TestCafe es un servicio especializado que permite a los equipos registrar pruebas funcionales y ejecutarlas en una variedad de navegadores.
  • CircleCI es un popular servicio de integración continua alojado. Una de sus características diferenciadoras es su enfoque en el rendimiento. Hace un uso intensivo de la computación en paralelo y divide los conjuntos de pruebas para ejecutar pruebas en paralelo. CircleCI admite muchos lenguajes de programación fáciles de iniciar y admite pruebas con muchas bases de datos SQL y NoSQL modernas como PostgreSQL, MongoDB y Riak.
  • Codeship es similar a Travis y CircleCI, pero es compatible con GitHub y BitBucket tanto para el código como para las credenciales. Realiza una integración y una entrega continuas, y admite implementaciones en plataformas de alojamiento PaaS como Heroku y Google App Engine. También se integra con herramientas de comunicación interna como HipChat y Campfire. De Codeship paralelo Tuberías de prueba es su respuesta a funcionamiento paralelo de CircleCI de conjuntos de pruebas.
Para obtener más información, lea nuestra Lista de 10 herramientas de integración continua para estimular el desarrollo de API

CI móvil

La llegada de los teléfonos inteligentes ha provocado una explosión cámbrica en el desarrollo de aplicaciones móviles. Las aplicaciones móviles tienen requisitos específicos en términos de sus procesos de construcción, prueba e implementación. Algunos de los principales proveedores de CI tienen una oferta de CI móvil, como CircleCI, que compró Distiller para brindar soporte para aplicaciones iOS .

También hemos visto la aparición de especialistas en CI móviles, como:

  • Hosted-CI , una solución de CI alojada centrada en aplicaciones iOS (así como aplicaciones de escritorio para OS X) construida sobre Jenkins.
  • GreenHouse , que admite código nativo de iOS y Android, así como marcos multiplataforma como Cordova e Ionic.
  • Bitrise es una solución similar. Además de las aplicaciones nativas de Android e iOS, Bitrise admite aplicaciones creadas con Xamarin .

De hecho, las aplicaciones móviles tienen diferentes requisitos en términos de prueba y distribución, y diferentes mecanismos para la gestión de la dependencia (como Cocoapods para las aplicaciones Swift y Objective-C).

Las pruebas móviles también requieren un software diferente de las pruebas de aplicaciones web. Los marcos de prueba móviles como Espresso para Android y Appium automatizan gran parte de las dificultades inherentes, pero dado que las aplicaciones móviles, como las aplicaciones nativas de escritorio, se ejecutan en el lado del cliente y fuera del contexto bien definido de un navegador, eso todavía deja un gran gris área que a los desarrolladores no les gusta dejar desatendidas.

Crashlytics , que ahora forma parte de Twitter Fabric , tiene capacidades de informes de fallas móviles además de su soporte integrado de CI. Estas alertas ayudan a los equipos de desarrollo a analizar y reaccionar ante las dificultades que encuentran los usuarios en sus dispositivos móviles. HockeyApp también informa fallas para aplicaciones móviles y de escritorio y le permite realizar pruebas en entornos móviles simulados.

Dado que hay una gran variedad de clientes móviles, especialmente en el mundo de Android, no es práctico realizar todas las pruebas de forma centralizada. En cambio, las pruebas beta se han adoptado en la comunidad de desarrollo móvil, con herramientas como TestFairy y TestFlight para distribuir nuevas versiones tentativas de aplicaciones a los probadores beta.

La distribución de aplicaciones móviles es un problema fundamentalmente diferente en comparación con las aplicaciones web. En lugar de simplemente enviar todo el código, incluidos los componentes del lado del cliente, a un entorno de servidor como Heroku o Amazon Web Services, una aplicación móvil debe pasar por el engorroso proceso de aprobación de las tiendas de aplicaciones relevantes. Esto ralentiza el proceso de entrega continua y, lamentablemente, introduce pasos manuales en un proceso que de otro modo sería completamente automatizado.

Fastlane , que ahora también forma parte de Twitter Fabric, tiene como objetivo agilizar la entrega de aplicaciones mediante la automatización de la mayoría de los elementos del flujo de trabajo de aprobación de aplicaciones, como tomar capturas de pantalla de la nueva aplicación y gestionar los certificados. Fastlane a veces se usa en combinación con una herramienta de CI como Jenkins.

Más sobre DevOps por Vassili van der Mersch: DevOps basado en API: Spotlight on Docker

Futuro de CI

La integración continua y la entrega continua llegaron para quedarse. La mayoría de los equipos de desarrollo no considerarían abordar un proyecto de software significativo sin configurar un flujo de trabajo de CI.

Pero está lejos de ser una disciplina estática: hay constantes innovaciones en el área de CI y nuevos campos de aplicación. Hemos explicado cómo la CI es relevante para el desarrollo web y móvil, pero los próximos años nos mostrarán cómo se integrará en los procesos de desarrollo en relojes inteligentes, automóviles inteligentes y, en general, en Internet de las cosas . ¿Cómo será la IC para el software de realidad virtual y biotecnología?

Las API se están convirtiendo cada vez más en la base de las comunicaciones por Internet, y la estabilidad es primordial para una API que funcione bien, por lo que CI será cada vez más importante en el desarrollo de API .

Un problema constante en CI es la dificultad de automatizar las pruebas en entornos de desarrollo que no siempre son similares a los de producción. Una evolución reciente en DevOps es la creciente popularidad de Docker , una tecnología de contenedor que le permite aislar las aplicaciones y sus dependencias de los sistemas subyacentes que se ejecutan en su interior. La portabilidad de Docker ha llevado a varios proveedores de CI a adoptar Docker. CircleCI admite aplicaciones basadas en contenedores y CodeShip presentó recientemente Jet , su solución para probar e implementar aplicaciones Docker.

Docker simplifica la CI moderna; una compilación desechable o un servidor de prueba está de repente a solo una llamada de API. Docker también reduce la necesidad de pruebas del sistema operativo, ya que estandariza los entornos de ejecución de aplicaciones.

Para llevar el mercado de CI al IoT, todos los dispositivos necesitarán un AP I

Pensamientos finales

Desde sus inicios como una tarea adicional para los equipos de desarrolladores y una concesión algo reacia a la calidad del código, la Integración Continua se ha convertido en uno de los pilares del desarrollo de software moderno. CI se ha trasladado a la nube y su alcance está creciendo gradualmente; La próxima vía para CI es quizás el Internet de las cosas, una implicación que nos entusiasma explorar pronto. También en un próximo artículo rastrearemos otro aspecto importante de DevOps, a saber, Gestión de la configuración, así que quédese .

Publicar un comentario

0 Comentarios