¿Qué es CI/CD? Integración continua y entrega continua
¿Qué es la Integración Continua (CI)?
Integración continua es un método de desarrollo de software donde los miembros del equipo integran su trabajo al menos una vez al día. En este método, cada integración es verificada mediante una compilación automatizada para detectar errores. Este concepto se introdujo por primera vez hace más de dos décadas para evitar el "infierno de la integración", que ocurre cuando la integración se pospone hasta el final de un proyecto.
En la integración continua, después de la confirmación de un código, el software se crea y prueba inmediatamente. En un proyecto grande con muchos desarrolladores, las confirmaciones se realizan muchas veces durante el día. Con cada confirmación, se construye y prueba el código. Si se pasa la prueba, se prueba la compilación para su implementación. Si la implementación es exitosa, el código se envía a producción. Esta confirmación, compilación, prueba e implementación es un proceso continuo y de ahí el nombre de integración/implementación continua.
¿Qué es la entrega continua (CD)?
Entrega Continua Es un método de ingeniería de software en el que un equipo desarrolla productos de software en un ciclo corto. Esto garantiza que el software pueda publicarse fácilmente en cualquier momento. El objetivo principal de la entrega continua es crear, probar y publicar software con buena velocidad y frecuencia. Le ayuda a reducir el costo, el tiempo y el riesgo de entregar cambios al permitir actualizaciones frecuentes en producción.
¿Cuál es la diferencia entre CI y CD?
Desarrollo sin CI vs. Desarrollo con CI
Estas son las diferencias clave entre el desarrollo con CI o sin CI:
Desarrollo sin IC | Desarrollo con CI |
---|---|
un montón de errores | Menos errores |
Confirmaciones poco frecuentes | confirmaciones regulares |
Lanzamientos poco frecuentes y lentos | Lanzamientos de trabajo regulares |
Integración difícil | Integración fácil y efectiva |
Las pruebas se realizan tarde | Las pruebas de integración continua se realizan tempranamente y con frecuencia. |
Los problemas planteados son más difíciles de solucionar | Encuentre y solucione problemas de forma más rápida y eficiente. |
Mala visibilidad del proyecto | Mejor visibilidad del proyecto |
Diferencia entre compilación e integración continua
Mientras que la compilación solo compila un código, CI realiza las siguientes actividades
integración de base de datos
- Asegúrese de que la base de datos y el código estén sincronizados
- Creación automatizada de bases de datos y datos de prueba.
Inspección de código
- Garantiza una base de código saludable
- Identifica problemas tempranamente y aplica las mejores prácticas.
Despliegue automatizado
- Le permite lanzar el producto en cualquier momento.
- Estado continuamente demostrable y funciona en cualquier máquina.
Generación de documentos
- Asegúrese de que la documentación esté actualizada
- Elimina quemado del revelador.
- Produce informes y métricas de construcción.
Compilación
La compilación es el proceso que sigue la computadora para convertir un código de lenguaje de programación de alto nivel en un lenguaje de máquina que la computadora pueda entender. Garantiza un compilador de código en cada plataforma de destino.
¿Cuándo construyo?
- En cada check-in
- Cada vez que cambia una dependencia
¿Qué pasos hay en la integración continua?
- Idealmente, la compilación debería provenir de la línea de comandos y no debería depender de un entorno de desarrollo integrado (IDE).
- La compilación debe realizarse continuamente utilizando un servidor Cl dedicado, no un trabajo cron.
- El CI creado debe activarse en cada check-in y no solo a medianoche
- La compilación debe proporcionar comentarios inmediatos y no requerir ningún esfuerzo del desarrollador.
- Identifique métricas clave y realice un seguimiento visual. Más importante aún, actúa en consecuencia de inmediato.
¿Qué se necesita para llevar a cabo el proceso de CI?
Estos son los elementos clave que necesita para realizar todo el proceso de CI:
- Sistema de control de versiones (VCS): Ofrece un método confiable para centralizar y preservar los cambios realizados en su proyecto a lo largo del tiempo.
- Máquina virtual: Deberías tener un servidor de repuesto o al menos uno máquina virtual para construir su sistema.
- Soluciones de herramientas de CI alojadas: Para evitar servidores o máquinas virtuales, debe optar por soluciones de herramientas de CI alojadas. Esta herramienta ayuda en el mantenimiento de todo el proceso y ofrece una escalabilidad más sencilla.
- Herramientas: Si selecciona una variante autohospedada, deberá instalar una de las muchas Herramientas de CI como Jenkins, TeamCity, Bamboo, GitLab, etc.
¿Cómo funciona la integración continua?
Seguramente conoces el antiguo teléfono Nokia. Nokia solía implementar un procedimiento llamado compilación nocturna. Después de múltiples confirmaciones de diversos desarrolladores durante el día, el software se desarrolló todas las noches. Dado que el software se creó solo una vez al día, es muy complicado aislar, identificar y corregir los errores en una base de código grande.
Later, adoptaron el enfoque de Integración Continua. El software se creó y probó tan pronto como un desarrollador comprometió el código. Si se detecta algún error, el desarrollador respectivo puede solucionar el defecto rápidamente.
Características de la IC
Estas son las características y beneficios importantes de la integración continua:
- Le permite mantener un único repositorio de origen
- Puede probar el clon del entorno de CI de producción
- El entorno construido debe estar cerca del entorno de producción.
- Una de las ventajas de la integración continua es la disponibilidad constante de una compilación actual.
- El proceso completo de construcción, prueba e implementación debe ser visible para todos los titulares de la pila.
¿Por qué utilizar CI?
A continuación se presentan razones importantes para utilizar la integración continua:
- Le ayuda a crear software de mejor calidad.
- El proceso de CI ayuda a aumentar la plantilla y el rendimiento de entrega de los equipos de ingeniería.
- CI permite a los desarrolladores de software trabajar de forma independiente en funciones en paralelo.
- Le ayuda a realizar pruebas repetibles
- Aumentar la visibilidad permitiendo una mayor comunicación.
- Ayuda a desarrollar un producto potencialmente comercializable para una construcción totalmente automatizada
- Le ayuda a reducir los riesgos al hacer que la implementación sea más rápida y predecible.
- retroalimentación inmediata cuando llega el problema
- Evite confusiones de último momento sobre la fecha y el momento del lanzamiento
Mejores prácticas de uso de sistemas CI
Estas son algunas de las mejores prácticas importantes al implementar
- Comprométete temprano y a menudo, nunca cometas código roto
- Solucionar fallos de compilación inmediatamente
- Actuar sobre métricas
- Incorpore cada entorno de destino. Cree artefactos a partir de cada compilación.
- La construcción del software debe realizarse de manera que pueda automatizarse.
- No dependas de un IDE
- Construya y pruebe todo cuando cambie
- El esquema de la base de datos cuenta como todo.
- Le ayuda a descubrir métricas clave y realizar un seguimiento visual de ellas.
- Regístrese con frecuencia y temprano
- Control más estricto del código fuente
- La integración continua consiste en ejecutar pruebas unitarias cada vez que confirma el código.
- Automatiza la construcción y prueba a todos.
- Mantenga la compilación rápida con la implementación automatizada
Desventajas de la IC
A continuación se detallan las desventajas/desventajas del proceso de integración continua:
- Se requiere tiempo de configuración inicial y capacitación para familiarizarse con el servidor Cl
- El desarrollo de procedimientos de prueba adecuados es esencial
- Un conjunto de pruebas bien desarrollado requirió muchos recursos para el servidor Cl
- Conversión de procesos familiares.
- Requiere servidores y entornos adicionales
- Pueden ocurrir tiempos de espera cuando varios desarrolladores desean integrar su código aproximadamente al mismo tiempo.
Herramientas para el proceso de CI
Estas son algunas de las herramientas de CI/CD más esenciales:
Jenkins
Jenkins es un software de integración continua de código abierto. Está escrito usando el Java lenguaje de programación. Facilita las pruebas en tiempo real y la generación de informes sobre cambios aislados en una base de código más masiva. Este software ayuda a los desarrolladores a encontrar y resolver rápidamente defectos en su código base y automatizar las pruebas de sus compilaciones.
Bamboo
Bamboo es un servidor de compilación de integración continua que realiza compilaciones, pruebas y lanzamientos automáticos en un solo lugar. Funciona a la perfección con el software JIRA y Bitbucket. Bamboo Admite muchos lenguajes y tecnologías como CodeDeply, Docker, Git, SVN, Mercurial, AWS y Amazon Cubos S3.
TeamCity
TeamCity es un servidor de integración continua que admite muchas funciones potentes. Mantiene un servidor de CI saludable y estable incluso cuando no se están ejecutando compilaciones. Proporciona una mejor calidad de código para cualquier proyecto.
Resum
- Definición de integración continua: la integración continua es un método de desarrollo de software donde los miembros del equipo pueden integrar su trabajo al menos una vez al día.
- CI/CD significa combinación de integración continua y entrega continua o implementación continua.
- El desarrollo sin CI crea muchos errores, mientras que el desarrollo con CI ofrece menos errores
- Las actividades importantes de la integración continua son 1) integración de base de datos, 2) inspección de código, 3) implementación automatizada, generación de documentos y compilación.
- La compilación debe realizarse continuamente utilizando un servidor Cl dedicado, no un trabajo cron.
- Los elementos importantes de CI son 1) Sistema de control de versiones 2) Máquina virtual 3) Soluciones de herramientas de CI host 4) Herramientas
- El sistema de integración continua le permite mantener un único repositorio de origen
- El proceso CI/CD le ayuda a crear software de mejor calidad
- Las mejores prácticas más importantes de Azure El proceso de integración continua consiste en comprometerse temprano y a menudo, nunca comprometerse con el código roto.
- El mayor inconveniente de la Canalización de CI / CD El proceso es que un conjunto de pruebas bien desarrollado requería muchos recursos para el servidor Cl.
- Jenkins Bambook y Team City son algunos AWS continuos útiles Herramientas de integración.