SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
¿Cómo elegir tu Workflow
de Git?
https://FractionalCTO.es
¿Qué son los
Workflows
de Git?
• Definen flujos de trabajo para colaborar en
un repositorio entre varias personas
• Especifican una política de ramas. Qué
ramas de larga duración existen y cuales de
corta duración se crean
• Definen cómo se integran los cambios
• Cuál elegir depende de: tamaño y seniority
del equipo, software en desarrollo, nivel de
automatización y frecuencia de releases
¿Qué Git
Workflows hay?
• GitFlow
• Feature branch/Github Flow
• GitLab Flow
• Trunk Based Development
GitFlow
• Legacy. Creado en 2010.
• Algo complicado, multitud de ramas.
• Ramas de larga duración:
• Main: Guarda el históricos de releases
• Develop: Rama en la que se integran los cambios
de la siguiente release
• Ramas de corta duración:
• feature/bug/…: Se crea una rama por cada
nueva funcionalidad o bug fix
• release/hotfix…: Se crea una rama por cada
release
GitFlow (cont.)
• Al haber tantas ramas es posible que se olvide propagar un cambio
• Dificulta la integración continua. Los cambios pueden tardar días e incluso semanas
hasta que se integran y despliegan
• Hay más tiempo (y etapas) para revisar y validar los cambios antes de desplegar en
Producción
• Se emplea más tiempo en la gestión de ramas e integración
Feature-
branch/GitHub Flow
• Cortos ciclos de desarrollo y
despliegues más frecuentes
• Ramas de larga duración:
• Main: Rama de integración
• Ramas de corta duración:
• features/… : Una rama por nueva
funcionalidad o bug fix
• 1 – Despliegue + Testing de rama
• 2 – Mergeo a main
GitLab Flow
• Parecido a Github Flow pero incluye
ramas para los entornos
• Ramas de larga duración:
• Main: Rama de integración
• Ramas por entorno:
• Staging, Production, etc..
• Ramas de corta duración:
• features/… : Una rama por nueva
funcionalidad o bug fix
GitLab Flow (cont.)
• La release se va promocionando entre entornos (y ramas)
• Cada rama de entorno tiene su propio pipeline de CI/CD para
desplegar
• Permite gestionar fácilmente los despliegues a través de Git
• El repositorio almacena qué versión hay en cada entorno
Trunk Based
Development (TBD)
• Se trabaja en 1 sola rama Main (o
trunk)
• Commits, Pushes y Pulls frecuentes
para reducir el tiempo de integración
(Varios por día)
• Todos los commits son deployables
• Uso de feature flags para el trabajo no
finalizado
Source: trunkbaseddevelopment.com
Trunk Based
Development (cont.)
• Una feature flag es una variable que permite activar/desactivar el código de una
funcionalidad por configuración.
• TBD es la máxima expresión de Continous Integration.
• Los commits pueden desplegarse el mismo día que se hacen.
• Para equipos con un proceso maduro y buena automatización de tests.
Qué Workflow elegir?
• Dependerá del tamaño del equipo, seniority, grado de automatización y ciclos
de entrega del producto
• GitFlow ya no está recomendado salvo para proyectos con ciclos largos y
requisitos de calidad muy altos. Ej: aeronáutica
• TBD y GitHub Flow están recomendado para aplicaciones que se desplieguen
muy frecuentemente, y equipos maduros con un grado de automatización alto
• GitLab Flow para productos que tengan una cadencia de despliegues regular.
Ej: 1 release por Sprint
Gracias
Si quieres ayuda para revisar tu Workflow de
Git y ver si es el que mejor se adapta a tu
contexto contáctame por DM.
https://FractionalCTO.es

Más contenido relacionado

La actualidad más candente

RedisConf17 - Internet Archive - Preventing Cache Stampede with Redis and XFetch
RedisConf17 - Internet Archive - Preventing Cache Stampede with Redis and XFetchRedisConf17 - Internet Archive - Preventing Cache Stampede with Redis and XFetch
RedisConf17 - Internet Archive - Preventing Cache Stampede with Redis and XFetchRedis Labs
 
NLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTNLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTLGCNSairesearch
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유Hyojun Jeon
 
The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습Hyun-woo Park
 
SSDC2022 - AI for Everyone 딥러닝 논문읽고 성장하는 모임이야기
SSDC2022 - AI for Everyone 딥러닝 논문읽고 성장하는 모임이야기SSDC2022 - AI for Everyone 딥러닝 논문읽고 성장하는 모임이야기
SSDC2022 - AI for Everyone 딥러닝 논문읽고 성장하는 모임이야기taeseon ryu
 
Lição 12 - A Rebelião de Absalão
Lição 12 - A Rebelião de AbsalãoLição 12 - A Rebelião de Absalão
Lição 12 - A Rebelião de AbsalãoÉder Tomé
 
Revista adulto de professor 3 trimestre 2017
Revista adulto de professor 3 trimestre 2017Revista adulto de professor 3 trimestre 2017
Revista adulto de professor 3 trimestre 2017Hamilton Souza
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 정주 김
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)Hyojun Jeon
 
딥러닝 논문읽기 모임 - 송헌 Deep sets 슬라이드
딥러닝 논문읽기 모임 - 송헌 Deep sets 슬라이드딥러닝 논문읽기 모임 - 송헌 Deep sets 슬라이드
딥러닝 논문읽기 모임 - 송헌 Deep sets 슬라이드taeseon ryu
 
애자일 코치
애자일 코치애자일 코치
애자일 코치영기 김
 
Lição 12 - A Volta do Exílio e a Preservação do Povo de Israel
Lição 12 - A Volta do Exílio e a Preservação do Povo de IsraelLição 12 - A Volta do Exílio e a Preservação do Povo de Israel
Lição 12 - A Volta do Exílio e a Preservação do Povo de IsraelÉder Tomé
 

La actualidad más candente (14)

RedisConf17 - Internet Archive - Preventing Cache Stampede with Redis and XFetch
RedisConf17 - Internet Archive - Preventing Cache Stampede with Redis and XFetchRedisConf17 - Internet Archive - Preventing Cache Stampede with Redis and XFetch
RedisConf17 - Internet Archive - Preventing Cache Stampede with Redis and XFetch
 
NLU Tech Talk with KorBERT
NLU Tech Talk with KorBERTNLU Tech Talk with KorBERT
NLU Tech Talk with KorBERT
 
ESPÍRITO SANTO
ESPÍRITO SANTOESPÍRITO SANTO
ESPÍRITO SANTO
 
Untuk apa kita hidup ?
Untuk apa kita hidup ?Untuk apa kita hidup ?
Untuk apa kita hidup ?
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습
 
SSDC2022 - AI for Everyone 딥러닝 논문읽고 성장하는 모임이야기
SSDC2022 - AI for Everyone 딥러닝 논문읽고 성장하는 모임이야기SSDC2022 - AI for Everyone 딥러닝 논문읽고 성장하는 모임이야기
SSDC2022 - AI for Everyone 딥러닝 논문읽고 성장하는 모임이야기
 
Lição 12 - A Rebelião de Absalão
Lição 12 - A Rebelião de AbsalãoLição 12 - A Rebelião de Absalão
Lição 12 - A Rebelião de Absalão
 
Revista adulto de professor 3 trimestre 2017
Revista adulto de professor 3 trimestre 2017Revista adulto de professor 3 trimestre 2017
Revista adulto de professor 3 trimestre 2017
 
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출 NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
NDC 2016 김정주 - 기계학습을 활용한 게임어뷰징 검출
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
 
딥러닝 논문읽기 모임 - 송헌 Deep sets 슬라이드
딥러닝 논문읽기 모임 - 송헌 Deep sets 슬라이드딥러닝 논문읽기 모임 - 송헌 Deep sets 슬라이드
딥러닝 논문읽기 모임 - 송헌 Deep sets 슬라이드
 
애자일 코치
애자일 코치애자일 코치
애자일 코치
 
Lição 12 - A Volta do Exílio e a Preservação do Povo de Israel
Lição 12 - A Volta do Exílio e a Preservação do Povo de IsraelLição 12 - A Volta do Exílio e a Preservação do Povo de Israel
Lição 12 - A Volta do Exílio e a Preservação do Povo de Israel
 

Similar a Elige tu Workflow de Git óptimo

Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADDIEGOALBERTOENRIQUEZ4
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando GitHugo Gilmar Erazo
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDaniel Cruz
 
Control de versiones con git
Control de versiones con gitControl de versiones con git
Control de versiones con gitEudris Cabrera
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasJosé Moreno
 
Git with gifs
Git with gifsGit with gifs
Git with gifsbetabeers
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoAprende Git
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a GitSergio Rus
 
Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en españolRamón Glez
 
Técnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesTécnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesAngel Armenta
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y GithubJavier Novoa Cataño
 
Induccion0_GitLab.pptx
Induccion0_GitLab.pptxInduccion0_GitLab.pptx
Induccion0_GitLab.pptxssuser3ff40a
 
U1 Control de versiones.pdf
U1 Control de versiones.pdfU1 Control de versiones.pdf
U1 Control de versiones.pdfEric Quiñones
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitDrPantera
 

Similar a Elige tu Workflow de Git óptimo (20)

Replacing SVN with Git for managers
Replacing SVN with Git for managersReplacing SVN with Git for managers
Replacing SVN with Git for managers
 
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDADTodo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
Todo sobre el mundo del GIT-INTEGRACION-CONCEPTOS-USABILIDAD
 
Control de versiones utilizando Git
Control de versiones utilizando GitControl de versiones utilizando Git
Control de versiones utilizando Git
 
Un modelo exitoso para git
Un modelo exitoso para gitUn modelo exitoso para git
Un modelo exitoso para git
 
Git Flow y GitOps
Git Flow y GitOpsGit Flow y GitOps
Git Flow y GitOps
 
Desarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nubeDesarrollo de aplicaciones en la nube
Desarrollo de aplicaciones en la nube
 
Control de versiones con git
Control de versiones con gitControl de versiones con git
Control de versiones con git
 
Presentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones SegurasPresentacion #2 github Aplicaciones Seguras
Presentacion #2 github Aplicaciones Seguras
 
Git with gifs
Git with gifsGit with gifs
Git with gifs
 
Git: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativoGit: flujos de trabajo y herramientas para trabajo colaborativo
Git: flujos de trabajo y herramientas para trabajo colaborativo
 
Introducción a Git
Introducción a GitIntroducción a Git
Introducción a Git
 
Git with Scrum en español
Git with Scrum en españolGit with Scrum en español
Git with Scrum en español
 
Técnicas avanzadas de control de versiones
Técnicas avanzadas de control de versionesTécnicas avanzadas de control de versiones
Técnicas avanzadas de control de versiones
 
Git & GitHub Part I
Git & GitHub Part IGit & GitHub Part I
Git & GitHub Part I
 
Administra tu código con Git y Github
Administra tu código con Git y GithubAdministra tu código con Git y Github
Administra tu código con Git y Github
 
Induccion0_GitLab.pptx
Induccion0_GitLab.pptxInduccion0_GitLab.pptx
Induccion0_GitLab.pptx
 
Control de versiones (CVS)
Control de versiones (CVS)Control de versiones (CVS)
Control de versiones (CVS)
 
Herramientas
HerramientasHerramientas
Herramientas
 
U1 Control de versiones.pdf
U1 Control de versiones.pdfU1 Control de versiones.pdf
U1 Control de versiones.pdf
 
Introducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y gitIntroducción al desarrollo de software en comunidad con forja de software y git
Introducción al desarrollo de software en comunidad con forja de software y git
 

Elige tu Workflow de Git óptimo

  • 1. ¿Cómo elegir tu Workflow de Git? https://FractionalCTO.es
  • 2. ¿Qué son los Workflows de Git? • Definen flujos de trabajo para colaborar en un repositorio entre varias personas • Especifican una política de ramas. Qué ramas de larga duración existen y cuales de corta duración se crean • Definen cómo se integran los cambios • Cuál elegir depende de: tamaño y seniority del equipo, software en desarrollo, nivel de automatización y frecuencia de releases
  • 3. ¿Qué Git Workflows hay? • GitFlow • Feature branch/Github Flow • GitLab Flow • Trunk Based Development
  • 4. GitFlow • Legacy. Creado en 2010. • Algo complicado, multitud de ramas. • Ramas de larga duración: • Main: Guarda el históricos de releases • Develop: Rama en la que se integran los cambios de la siguiente release • Ramas de corta duración: • feature/bug/…: Se crea una rama por cada nueva funcionalidad o bug fix • release/hotfix…: Se crea una rama por cada release
  • 5. GitFlow (cont.) • Al haber tantas ramas es posible que se olvide propagar un cambio • Dificulta la integración continua. Los cambios pueden tardar días e incluso semanas hasta que se integran y despliegan • Hay más tiempo (y etapas) para revisar y validar los cambios antes de desplegar en Producción • Se emplea más tiempo en la gestión de ramas e integración
  • 6. Feature- branch/GitHub Flow • Cortos ciclos de desarrollo y despliegues más frecuentes • Ramas de larga duración: • Main: Rama de integración • Ramas de corta duración: • features/… : Una rama por nueva funcionalidad o bug fix • 1 – Despliegue + Testing de rama • 2 – Mergeo a main
  • 7. GitLab Flow • Parecido a Github Flow pero incluye ramas para los entornos • Ramas de larga duración: • Main: Rama de integración • Ramas por entorno: • Staging, Production, etc.. • Ramas de corta duración: • features/… : Una rama por nueva funcionalidad o bug fix
  • 8. GitLab Flow (cont.) • La release se va promocionando entre entornos (y ramas) • Cada rama de entorno tiene su propio pipeline de CI/CD para desplegar • Permite gestionar fácilmente los despliegues a través de Git • El repositorio almacena qué versión hay en cada entorno
  • 9. Trunk Based Development (TBD) • Se trabaja en 1 sola rama Main (o trunk) • Commits, Pushes y Pulls frecuentes para reducir el tiempo de integración (Varios por día) • Todos los commits son deployables • Uso de feature flags para el trabajo no finalizado Source: trunkbaseddevelopment.com
  • 10. Trunk Based Development (cont.) • Una feature flag es una variable que permite activar/desactivar el código de una funcionalidad por configuración. • TBD es la máxima expresión de Continous Integration. • Los commits pueden desplegarse el mismo día que se hacen. • Para equipos con un proceso maduro y buena automatización de tests.
  • 11. Qué Workflow elegir? • Dependerá del tamaño del equipo, seniority, grado de automatización y ciclos de entrega del producto • GitFlow ya no está recomendado salvo para proyectos con ciclos largos y requisitos de calidad muy altos. Ej: aeronáutica • TBD y GitHub Flow están recomendado para aplicaciones que se desplieguen muy frecuentemente, y equipos maduros con un grado de automatización alto • GitLab Flow para productos que tengan una cadencia de despliegues regular. Ej: 1 release por Sprint
  • 12. Gracias Si quieres ayuda para revisar tu Workflow de Git y ver si es el que mejor se adapta a tu contexto contáctame por DM. https://FractionalCTO.es