Estrategia para mezclar ramas de funcionalidad con la rama develop/desarrollo

Detectar un push en cualquier rama de funcionalidad y validar en el mensaje de commit una palabra clave para identificar que la funcionalidad ha sido terminada y puede integrarse a desarrollo. Esta estrategia implica tres pasos:

  1. Detectar la palabra clave que se defina en el commit
  2. Actualizar la rama de funcionalidad con respecto a la rama de desarrollo, es decir mezclar la rama de desarrollo en la rama funcionalidad.
  3. Correr las pruebas en la rama de funcionalidad. Si las pruebas pasan se mezcla la rama de funcionalidad en la rama desarrollo, de lo contrario se cierra la acción.

Estrategia para mezclar la rama release con la rama master

Detectar un push a desarrollo y validar en el mensaje de commit una palabra clave para identificar si se va a crear la rama release. Si se detecta la palabra clave en el commit se crea la rama release, se mezcla la rama de desarrollo en la rama release y se corren las pruebas. Si las pruebas pasan se mezcla la rama release en la rama master, de lo contrario se cierra la acción.

Algunas instrucciones de GitHub Actions que pueden ser útiles para implementar estas estrategias

  1. Si desea detectar un push a cualquier rama que este nombrada con un prefijo (p. ej.el prefijo **historia**) puede incluir en la definición de ramas del flujo historia**:
     on:
         push:
             branches:
                 - 'historia**'
     
  2. Si desea validar una palabra clave en el mensaje de commit, por ejemplo, “PALABRACLAVE”, puede utilizar la función contanis:
     if: ${{ contains(github.event.head_commit.message, 'PALABRACLAVE') }}
     
  3. Si desea identificar el nombre de la rama que hizo el push, puede utilizar la variable github.ref:
     ${{ github.ref }}
     
  4. Si desea mezclar 2 ramas, puede utilizar la instrucción del Marketplace direct-merge-action. Ver documentación en: https://github.com/tukasz/direct-merge-action
  - name: Mezcla rama1 -> rama2
    uses: tukasz/direct-merge-action@master
    with:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      source-branch: rama1
      target-branch: rama2
  1. Si desea crear una rama, puede utilizar.
  - name: Crear rama
    run: |
      git checkout -b rama
      git push -f -u origin rama

 Esta instrucción ejecuta dos comandos git, uno para crear la rama en el contenedor del action y otro para sobreescribirla con el repositorio remoto. -f es la abreviación de --force y -u es la abreviación de --set-upstream.

En este enlace pueden encontrar la documentación oficial sobre la sintaxis de GitHub Actions: https://docs.github.com/es/actions/using-workflows/workflow-syntax-for-github-actions