Implemente una estrategia de ramificación troncal para entornos de cuentas múltiples DevOps - Recomendaciones de AWS

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.

Implemente una estrategia de ramificación troncal para entornos de cuentas múltiples DevOps

Mike Stephens y Rayjan Wilson, Amazon Web Services

Resumen

Al administrar un repositorio de código fuente, las diferentes estrategias de ramificación afectan a los procesos de desarrollo y lanzamiento de software que utilizan los equipos de desarrollo. Algunos ejemplos de estrategias de ramificación comunes son Trunk, GitHub Flow y Gitflow. Estas estrategias utilizan diferentes ramificaciones y las actividades que se llevan a cabo en cada entorno son diferentes. Organismos que están implementando DevOps procesos se beneficiarían de una guía visual que les ayude a entender las diferencias entre estas estrategias de ramificación. El uso de este elemento visual en su organización ayuda a los equipos de desarrollo a alinear su trabajo y seguir los estándares de la organización. Este patrón proporciona este elemento visual y describe el proceso de implementación de una estrategia de ramificación de Trunk en su organización.

Este patrón forma parte de una serie de documentos sobre la elección e implementación de estrategias de DevOps ramificación para organizaciones con múltiples sucursales. Cuentas de AWS Esta serie está diseñada para ayudarlo a aplicar la estrategia correcta y las prácticas recomendadas desde el principio, a fin de optimizar su experiencia en la nube. Trunk es solo una posible estrategia de ramificación que su organización puede utilizar. Esta serie de documentación también cubre los modelos de ramificación de GitHub Flow y Gitflow. Si aún no lo has hecho, te recomendamos que revises Cómo elegir una estrategia de ramificación de Git para DevOps entornos de múltiples cuentas antes de implementar la guía de este patrón. Utilice la diligencia debida para elegir la estrategia de ramificación adecuada para su organización.

En esta guía se proporciona un diagrama en el que se muestra cómo una organización podría implementar la estrategia de Trunk. Se recomienda que consulte la Guía oficial de AWS DevOps Well-Architected para revisar las mejores prácticas. Este patrón incluye las tareas, los pasos y las restricciones recomendados para cada paso del DevOps proceso.

Requisitos previos y limitaciones

Requisitos previos 

  • Git instalado. Se utiliza como herramienta de repositorio de código fuente.

  • Draw.io instalado. Esta aplicación se utiliza para ver y editar el diagrama.

Arquitectura

Arquitectura de destino

El siguiente diagrama se puede usar como un cuadro de Punnett (Wikipedia). Alinee las ramas en el eje vertical con los AWS entornos en el eje horizontal para determinar qué acciones realizar en cada escenario. Los números indican la secuencia de las acciones del flujo de trabajo. En este ejemplo, se pasa de una ramificación feature a la implementación en producción.

Cuadro de Punnett de las actividades de Trunk en cada ramificación y entorno

Para obtener más información sobre los Cuentas de AWS entornos y las ramas en un enfoque troncal, consulta Cómo elegir una estrategia de ramificación de Git para entornos con varias cuentas DevOps .

Automatización y escala

La integración y la entrega continuas (CI/CD) is the process of automating the software release lifecycle. It automates much or all of the manual processes traditionally required to get new code from an initial commit into production. A CI/CD pipeline encompasses the sandbox, development, testing, staging, and production environments. In each environment, the CI/CD pipeline provisions any infrastructure that is needed to deploy or test the code. By using CI/CD, development teams can make changes to code that are then automatically tested and deployed. CI/CDcanalizaciones) también proporcionan control y protección a los equipos de desarrollo, ya que refuerzan la coherencia, los estándares, las mejores prácticas y niveles mínimos de aceptación para la aceptación y el despliegue de las funciones. Para obtener más información, consulte Practicar la integración continua y la entrega continua en. AWS

AWS ofrece un conjunto de servicios para desarrolladores diseñados para ayudarle a crear CI/CD canalizaciones. Por ejemplo, AWS CodePipelinees un servicio de entrega continua totalmente gestionado que le ayuda a automatizar sus procesos de lanzamiento para obtener actualizaciones rápidas y fiables de las aplicaciones y la infraestructura. AWS CodeBuildcompila el código fuente, ejecuta pruebas y produce paquetes de ready-to-deploy software. Para obtener más información, consulte Herramientas para desarrolladores en AWS.

Tools (Herramientas)

AWS servicios y herramientas

AWS proporciona un conjunto de servicios para desarrolladores que puede utilizar para implementar este patrón:

  • AWS CodeArtifact es un servicio de repositorio de artefactos administrado y altamente escalable que lo ayuda a almacenar y compartir paquetes de software para el desarrollo de aplicaciones.

  • AWS CodeBuild es un servicio de compilación completamente administrado que le permite compilar código fuente, poner en marcha pruebas unitarias y producir artefactos listos para implementar.

  • AWS CodeDeployautomatiza las implementaciones en Amazon Elastic Compute Cloud EC2 (Amazon) o en instancias, AWS Lambda funciones locales o servicios de Amazon Elastic Container Service (Amazon ECS).

  • AWS CodePipeline permite diseñar y configurar rápidamente las diferentes etapas de un proceso de lanzamiento de software y automatizar los pasos necesarios para lanzar los cambios en el software de manera continua.

Otras herramientas

  • Draw.io Desktop: una aplicación para hacer diagramas y diagramas de flujo.

  • Figma es una herramienta de diseño en línea diseñada para la colaboración. El repositorio de código contiene plantillas en formato .fig para Figma.

Repositorio de código

El archivo fuente del diagrama de este patrón está disponible en el repositorio GitHub Git Branching Strategy for Trunk. Incluye archivos en los formatos PNG, draw.io y Figma. Puede modificar estos diagramas para respaldar los procesos de su organización.

Prácticas recomendadas

Siga las mejores prácticas y recomendaciones de AWS DevOps Well-Architected Guidance y Choosing a Git Branching Strategy for Multiaccount Environments. DevOps Estos recursos lo ayudan a implementar de manera efectiva el desarrollo basado en Trunk, fomentar la colaboración, mejorar la calidad del código y agilizar el proceso de desarrollo.

Epics

TareaDescripciónHabilidades requeridas

Revisar el proceso estándar de Trunk.

  1. En el entorno de pruebas, el desarrollador crea una ramificación feature a partir de la ramificación main y usa el patrón de nomenclatura feature/<ticket>_<initials>_<short description>.

  2. El desarrollador desarrolla el código y lo implementa en el entorno de pruebas de forma iterativa para completar el ticket.

    nota

    Si lo desea, el desarrollador puede crear una ramificación sandbox para ejecutar una canalización automatizada de compilación o implementación en el entorno de pruebas.

  3. El desarrollador crea una solicitud de fusión de la ramificación feature a la ramificación main mediante una combinación de squash.

  4. Una canalización de integración y entrega continuas (CI/CD) crea y publica automáticamente los artefactos de la ramificación main en el entorno de desarrollo.

  5. Un aprobador aprueba manualmente la implementación de los artefactos de lanzamiento en el entorno de desarrollo.

  6. Un aprobador aprueba manualmente la implementación de los artefactos de lanzamiento en el entorno de pruebas.

  7. Un aprobador aprueba manualmente la implementación de los artefactos de lanzamiento en el entorno de ensayo.

  8. Un aprobador aprueba manualmente la implementación de los artefactos de lanzamiento en el entorno de producción.

DevOps ingeniero

Resolución de problemas

ProblemaSolución

Conflictos de ramificaciones

Un problema común que puede producirse con el modelo de Trunk es cuando es necesario llevar a cabo una revisión en producción, pero el cambio correspondiente debe producirse en una ramificación feature en la que se modifican los mismos recursos. Le recomendamos que combine con frecuencia los cambios de main en las ramificaciones inferiores para evitar conflictos importantes al llevar a cabo la combinación con main.

Recursos relacionados

En esta guía no se incluye capacitación sobre Git; sin embargo, hay muchos recursos de alta calidad disponibles en Internet si necesita esta capacitación. Le recomendamos que comience con el sitio de documentación de Git.

Los siguientes recursos pueden ayudarlo con su proceso de ramificaciones de Trunk en la Nube de AWS.

AWS DevOps orientación

Guía de Trunk

Otros recursos