Descripción de CI/CD - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Descripción de CI/CD

La integración y entrega continuas (CI/CD) es el proceso de automatización del ciclo de vida de los lanzamientos de software. En algunos casos, la D de CI/CD también puede significar implementación. La diferencia entre la entrega continua y la implementación continua se produce cuando se publica un cambio en el entorno de producción. Con la entrega continua, se requiere aprobación manual antes de pasar cambios a producción. La implementación continua ofrece un flujo ininterrumpido en toda la canalización y no se requieren aprobaciones explícitas. Como esta estrategia analiza los conceptos generales de CI/CD, las recomendaciones y la información proporcionadas se pueden aplicar tanto a los enfoques de entrega continua como de implementación continua.

La CI/CD automatiza gran parte o la totalidad de los procesos manuales que tradicionalmente se requerían para pasar código nuevo de confirmación a producción. Una canalización de CI/CD abarca las etapas de origen, compilación, prueba, uso transitorio y producción. En cada etapa, las canalizaciones de CI/CD proporcionan cualquier infraestructura necesaria para implementar o probar el código. Al usar una canalización de CI/CD, los equipos de desarrollo pueden hacer cambios en el código, que luego se prueban automáticamente y se implementan.

Revisemos el proceso básico de CI/CD antes de analizar algunas de las formas en las que puede, desviarse de una CI/CD completa de forma consciente o inconsciente. En el siguiente diagrama se enumeran las etapas de CI/CD y las actividades de cada una.

Las cinco etapas de un proceso de CI/CD y las actividades y entornos de cada una.

Acerca de la integración continua

La integración continua se produce en un repositorio de código, como un repositorio de Git en GitHub. Se trata una sola rama principal como origen de información para el código base y se crean ramas de corta duración para el desarrollo de características. Una rama de características se integra en la rama principal cuando lo tiene todo listo para implementar la característica en los entornos superiores. Las ramas de características nunca se implementan directamente en los entornos superiores. Para obtener más información, consulte la sección Enfoque basado en enlaces troncales de esta guía.

Proceso de integración continua

  1. El desarrollador crea una nueva rama a partir de la rama principal.

  2. El desarrollador hace cambios, compila y prueba de forma local.

  3. Cuando los cambios estén listos, el desarrollador crea una solicitud de extracción (documentación de GitHub) con la rama principal como destino.

  4. Se revisa el código.

  5. Cuando se aprueba el código, se fusiona con la rama principal.

Acerca de la entrega continua

La entrega continua se produce en entornos aislados, como entornos de desarrollo y de producción. Las acciones que se producen en cada entorno pueden variar. Una de las primeras etapas se suele utilizar para llevar a cabo actualizaciones en la propia canalización antes de continuar. El resultado final de la implementación es que cada entorno se actualiza con los cambios más recientes. La cantidad de entornos de desarrollo para la creación y las pruebas también varía, pero le recomendamos que utilice al menos dos. En el proceso, cada entorno se actualiza por orden según su importancia y termina con el entorno más importante, el entorno de producción.

Proceso de entrega continua

La parte del proceso de entrega continua se inicia con la extracción del código de la rama principal del repositorio de origen y su traslado a la etapa de compilación. El documento de infraestructura como código (IaC) del repositorio describe las tareas que se llevan a cabo en cada etapa. Si bien el uso de un documento de IaC no es obligatorio, se recomienda encarecidamente utilizar un servicio o una herramienta de IaC, como AWS CloudFormation o AWS Cloud Development Kit (AWS CDK). Los pasos más comunes son:

  1. Pruebas unitarias

  2. Compilación de código

  3. Aprovisionamiento de recursos

  4. Pruebas de integración

Si se produce algún error o alguna prueba falla en alguna etapa de la canalización, la etapa actual vuelve a su estado anterior y la canalización termina. Los cambios posteriores deben comenzar en el repositorio de código y pasar por todo el proceso de CI/CD.