Patrones de CI / CD y antipatrones. Parte 1

Hola a todos! Amigos, el último día de invierno, lanzaremos una nueva transmisión sobre el curso "Prácticas y herramientas de DevOps" . En previsión del comienzo del curso, compartimos con usted la primera parte del artículo: "Patrones y antipatrones de CI / CD".



La tarea de canalización de implementación consta de tres partes:

  • Visibilidad: Todos los aspectos de la cadena de suministro (creación, implementación, prueba y lanzamiento) son visibles para los miembros del equipo y facilitan la colaboración.
  • Comentarios: Los miembros del equipo se enteran de los problemas tan pronto como ocurren, para que puedan solucionarse lo antes posible.
  • Implementación continua: mediante un proceso totalmente automatizado, puede implementar y lanzar cualquier versión de software en cualquier entorno.



En el diagrama de la tubería de implementación anterior, todos los patrones tienen contexto. Algunos patrones cubren varias etapas de esta tubería, por lo que elegí la etapa en la que se usan con más frecuencia.

1.1 Gestión de la configuración: patrones y antipatrones

1.1.1 Software de terceros personalizado

  • Patrón: evalúe y use software de terceros que se pueda configurar, implementar y automatizar fácilmente.
  • Anti-patrón: software que no se puede configurar externamente. Software sin una API o interfaz de línea de comando que requiere un comando para usar una GUI.

1.1.2 Directorio de configuración

  • Patrón: Soporte para un catálogo de todos los parámetros de cada aplicación, formas de cambiar estos parámetros y la ubicación de almacenamiento de cada aplicación. Creación automática de catálogos como parte del proceso de construcción.
  • Anti-patrones: los parámetros de configuración no están documentados. El catálogo de todas las aplicaciones y otros activos es un "folklore" local e indescriptible.

1.1.3 Línea principal

  • Patrón: minimiza las fusiones, controla el número de líneas de código activas trabajando en la línea principal.
  • Antipatrones: varias ramas por proyecto.

1.1.4 Fusiones diarias

  • Patrón: los cambios comprometidos en la línea principal se aplican a todas las ramas al menos todos los días.
  • Antipatrones: combine todas las iteraciones una vez a la semana o menos de una vez al día.

1.1.5 Configuración segura

  • Patrón: almacenamiento de información de configuración en una ubicación segura y remotamente accesible, por ejemplo, en una base de datos, directorio o registro.
  • Anti-patrones: Abra contraseñas de texto y / o una computadora o recurso compartido.

1.1.6 Repositorio

  • Patrón: todos los archivos fuente (código ejecutable, configuración, entorno de host, datos) se cargan en el repositorio con control de versiones.
  • Anti-patrón: algunos archivos están comprimidos, otros, por ejemplo, configuraciones de entorno o cambios de datos, no. Los archivos binarios que se pueden recrear durante el proceso de compilación o implementación se registran.

1.1.7 Ramas de vida corta

  • Patrón: las ramas deben ser de corta duración, idealmente, varios días y no más de una iteración.
  • Anti-patrones: ramas que viven más tiempo que la iteración. Ramas para la funcionalidad del producto, que viven después del lanzamiento.

1.1.8 Entorno de equipo

  • Patrón: desproteja el repositorio del proyecto con control de versiones y ejecute un solo comando para compilar e implementar la aplicación en cualquier entorno disponible, incluido el desarrollo local.
  • Anti-patrón: requiere que el desarrollador defina y configure variables de entorno. Obligar al desarrollador a instalar muchas herramientas de compilación / implementación.

1.1.9 Una forma de operación

  • Patrón: gestión de la configuración de todo el sistema: fuentes, configuración, entorno, datos. Cualquier cambio puede rastrearse hasta una revisión específica en el sistema de control de versiones.
  • Anti-patrones: partes del sistema no tienen una versión. No se puede volver a la configuración anterior del software del sistema.

1.2 Integración continua de CI: patrones y antipatrones

1.2.1 Umbral de construcción

  • Patrón: el ensamblaje se bloquea cuando se violan las reglas del proyecto. Por ejemplo, violaciones de arquitectura, pruebas lentas, violación de los estándares de escritura de código.
  • Anti-patrones: revisión manual del código. Detección de problemas de calidad del código en las etapas posteriores del ciclo de desarrollo.

1.2.2 Comisiones frecuentes

  • Patrón: cada miembro del equipo se registra regularmente, al menos una vez al día, pero idealmente después de cada tarea para activar el sistema CI.
  • Anti-patrones: los archivos de origen se confirman con menos frecuencia que una vez al día debido a la cantidad de cambios realizados por el desarrollador.

1.2.3 Retroalimentación continua

  • Patrón: envío de comentarios automáticos del sistema de CI a todos los miembros del equipo multifuncional.
  • Anti-patrones: no se envían notificaciones; las notificaciones se ignoran; El sistema CI envía información a todos los que no se pueden utilizar.

1.2.4 Integración continua

  • Patrón: el ensamblaje y las pruebas de software se producen después de confirmar cualquier cambio en el repositorio del proyecto con control de versiones.
  • Antipatrones: ensamblajes programados, ensamblajes nocturnos, ensamblajes periódicos, ensamblajes exclusivamente en la máquina del desarrollador, falta total de ensamblaje.

1.2.5 El principio de "Stop Line"

  • Patrón: repare todos los errores de entrega de software tan pronto como surjan; "Detener la línea". Nadie se registra en un ensamblaje roto, ya que arreglarlo tiene la máxima prioridad.
  • Anti-patrón: los ensamblajes permanecen rotos durante mucho tiempo, evitando así que los desarrolladores verifiquen el código de trabajo.

1.2.6 Asamblea independiente

  • Patrón: los scripts de compilación se escriben por separado del IDE. El sistema de CI ejecuta estos scripts para que el ensamblaje se realice con cada cambio.
  • Anti-patrones: las compilaciones automáticas dependen de la configuración de IDE. No se puede iniciar el ensamblaje desde la línea de comandos.

1.2.7 Tableros visibles

  • Patrón: es posible ver toda la información sobre su sistema de entrega. Proporcionar retroalimentación de equipo interfuncional en tiempo real de alta calidad.
  • Antipatrones: las alertas solo se envían por correo electrónico. Los comentarios no se publican para todo el equipo.

El final de la primera parte.

Aquí hay tal material. Puede leer la continuación de la traducción aquí , y ahora estamos esperando sus comentarios y lo invitamos a un seminario web abierto , que se llevará a cabo esta noche.

Source: https://habr.com/ru/post/440862/


All Articles