Giter Site home page Giter Site logo

feature-branching's Introduction

Feature Branching v2

Automatiza el merge de todos los branch que cuenten con un label asociado.

Automatiza los merge de los cambios previo al lanzamiento en una única rama que contiene todos los cambios de todos los PR que futuramente puede ser usados para la rama principal. Evita pasar cambios a la rama de desarrollo si estos nos han finalizados o requieren mejoras. Ideal si se cuenta con un solo ambiente de staging anidado a la rama de desarrollo.

Ventajas:

  • Elimina ceremonias coordinación despliegue a staging
  • Fácilmente configurable
  • Evita crear cambios revert en las ramas no listas para ser productiva
  • Crea filosofía para despliegue usando nomenclatura el los nombres de PRs
  • Fácilmente adaptable a trunks base y git flow
  • Mantiene historia clara (No require mergear multiples PRs a master)
  • Claridad de cambios que pasan a productivo y los que aun no desde el panel de GitHub
  • Evita multiples PRs anidados
  • Destaca conflictos antes de mergear solución, ya que automatiza mensajes de alerta.

Configurar action

  1. Crea tu primer archivo action .github/workflows/feature-branching.yml con el siguiente contenido.

  2. Vamos a configurar los eventos pull_request y push para que se ejecute el flujo cuando se asigne o des-asigne una label a la rama base.

    on:
     workflow_dispatch: {}
     pull_request:
       types:
         - labeled
         - unlabeled
         - synchronize
         - ready_for_review
       branches:
         - develop
     push:
       branches:
         - develop
  3. Vamos a configurar la acción feature-branching donde tenemos que definir la rama base y que label se usara para crear la historia mesclada. La acción necesita previamente tener todos la historia de git, para esto usaremos la acción actions/checkout@v3

    Es necesario configurar la variable de ambiente GH_TOKEN para que pueda leer los PR del proyecto.

    - uses: actions/checkout@v3
      with:
        fetch-depth: 0
    - uses: JonDotsoy/feature-branching@v2-preview
      with:
        base_brach: develop
        label_name_to_merge: next-feature
      env:
        GH_TOKEN: ${{ github.token }}
  4. Crea un PR que este apuntando a la rama base develop y a continuación asigna el label next-feature para que se encargue de crear la historia ya combinada.

    Snapshot of https://github.com/JonDotsoy/feature-branching-demo/pulls
  5. Ahora se puede ver en la historia una nueva rama pre-develop que une la historia principal (develop) con los PRs que cuentan con el label next-feature en una nueva rama.

    snap to Network graph

Ejemplo completo

name: feature-branch

on:
  workflow_dispatch: {}
  pull_request:
    types:
      - labeled
      - unlabeled
      - synchronize
      - ready_for_review
    branches:
      - develop
  push:
    branches:
      - develop

permissions:
  contents: write
  pull-requests: write

jobs:
  merge:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - uses: JonDotsoy/feature-branching@v2-preview
        with:
          base_brach: develop
          label_name_to_merge: next-feature
        env:
          GH_TOKEN: ${{ github.token }}
      - run: |
          echo feature-branching.outputs.ref: ${{ steps.feature-branching.outputs.ref	 }}
      - run: |
          echo feature-branching.outputs.changed: ${{ steps.feature-branching.outputs.changed }}
      - run: |
          echo feature-branching.outputs.pr_name: ${{ steps.feature-branching.outputs.pr_name }}

Configuración

Input Descripción
label_name_to_merge Label que se usara para filtrar los PRs que coincidan
base_brach Nombre de la rama que se usara como base para crear el PR pre-release
destination_brach Nombre de la rama pre-release

Salida

Output Descripción
changed true si existe cambios en la historia, de otro modo retorna false
pr_name Retorna el valor de destination_brach cuenta con historia mergeada de otro modo retorna base_brach
ref Retorna the hash asociado al ultimo commit

feature-branching's People

Contributors

jondotsoy avatar

Watchers

 avatar

feature-branching's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.