Skip to content

wakamiti/wakamiti-github-actions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

215 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wakamiti-github-actions

Un repositorio centralizado de workflows reutilizables diseñados para agilizar y automatizar flujos de trabajo para proyectos impulsados por Wakamiti. Este repositorio proporciona acciones modulares para tareas comunes, asegurando consistencia y eficiencia a través de los repositorios.

Workflows

  1. Validar Código

    Este workflow se activa al crear una pull request. Valida el código mediante compilación, ejecución de tests y análisis en SonarQube. Si la rama de destino es main y la pull request proviene de una rama release o hotfix, también valida los elementos necesarios para hacer la release (fichero changelog, que la versión no exista, que no contenga dependencias snapshot, ...).

    flowchart LR
        PR1(("pull_request"))
        subgraph SUB1 [ ]
            direction TB
            V1["Configurar maven *"]
            V2["Compilar código *"]
            V3["Ejecutar tests"]
            V4["Análisis SonarQube"]
            V5{"Si 
                destino 'main' y 
                origen 'release' 
                o 'hotfix'"}
            V6["Validar nueva versión"]
        end
        
        PR1 -- opened
               synchronize
               reopened --> SUB1
        V1 --> V2 --> V3 --> V4 --> V5 --> V6
    
    Loading
  2. Crear Snapshot

    Este workflow se activa al hacer push a la rama develop. Se compila el código, se ejecutan tests, se valida la versión snapshot, se elimina el snapshot antiguo si existe y se despliega la nueva snapshot.

    flowchart LR
       D1(("push"))
       subgraph SUB1 [ ]
           direction TB
           S1["Configurar maven *"]
           S2["Compilar código *"]
           S3["Ejecutar tests"]
           S4["Validar Snapshot"]
           S5["Eliminar Snapshot antiguo"]
           S6["Desplegar Snapshot"]
       end
       
       D1 -- develop --> SUB1
       S1 --> S2 --> S3 --> S4 --> S5 --> S6
    
    Loading
  3. Preparar Release

    Este workflow se activa al hacer push a la rama develop con un commit que contiene #ready o mediante ejecución manual. Valida la versión y se crea la correspondiente rama release a partir del código de develop. En la rama release se cambia la versión del pom de SNAPSHOT a release, y el bloque [unreleased] del changelog a la versión correspondiente.

    flowchart LR
        D1(("push"))
        D2(("workflow_dispatch"))
        subgraph SUB1 [ ]
            direction TB
            S1["Configurar maven *"]
            S2["Validar versión"]
            S3["Crear rama release"]
            S4["Actualiza versión"]
            S5["Push con commit #ready"]
        end
    
        D1 -- develop 
              (commit #ready) --> SUB1
        D2 --> SUB1
        S1 --> S2 --> S3 --> S4 --> S5
    
    Loading
  4. Crear Pull Request

    Este workflow se activa al hacer push a una rama release o hotfix o mediante ejecución manual. Prepara la nueva versión y se crea un pull request a main.

    flowchart LR
        D1(("push"))
        D2(("workflow_dispatch"))
        subgraph SUB1 [ ]
            direction TB
            S1["Configurar maven *"]
            S2["Preparar versión"]
            S3["Crear pull request"]
        end
    
        D1 -- release
              hotfix
              (commit #ready) --> SUB1
        D2 --> SUB1
        S1 --> S2 --> S3 
    
    Loading
  5. Publicar Release

    Este workflow se activa cuando se cierra y fusiona un pull request desde una rama release o hotfix a la rama main o mediante ejecución manual. Despliega la versión final y crea una release en GitHub.

    flowchart LR
        D1(("pull_request"))
        D2{"Si 
            destino 'main' y
            origen 'release'
            o 'hotfix'"}
        subgraph SUB1 [ ]
            direction TB
            S1["Configurar maven *"]
            S2["Desplegar Release"]
            S3["Crear nueva Release"]
        end
    
        D1 -- closed
              merged --> D2 --> SUB1
        S1 --> S2 --> S3 
    
    Loading
  6. Iniciar Hotfix

    Este workflow se activa manualmente para crear una rama de hotfix a partir de la rama main. Valida la versión actual y prepara la nueva versión incrementando el patch, creando la rama de hotfix correspondiente.

    flowchart LR
        D1(("workflow_dispatch"))
        subgraph SUB1 [ ]
            direction TB
            S1["Validar versión"]
            S2["Preparar nueva versión"]
            S3["Crear rama hotfix"]
        end
        
        D1 --> SUB1
        S1 --> S2 --> S3
    
    Loading

(*): cacheable

Pruebas

Para ejecutar pruebas de las GitHub Actions localmente, se utiliza la herramienta act. Esta herramienta permite simular la ejecución de flujos de trabajo de GitHub Actions en tu máquina local, facilitando la depuración y validación. Esta herramienta ha sido dockerizada, junto con una serie de servicios simulados.

Important

Es necesario poder conectarse a Git mediante clave pública SSH. Ver más.

Comandos Disponibles

  • Instalar dependencias:

    make install
  • Ejecutar pruebas:

    make test
  • Limpiar pruebas:

    Elimina los repositorios de las pruebas en el servidor git simulado.

    make clean
  • Actualizar workflows:

    Carga los workflows en el contenedor de act.

    make workflows
  • Limpiar entorno:

    Elimina las carpetas target y el contenedor de act.

    make shutdown

About

A collection of reusable GitHub workflows to automate Wakamiti-based projects

Topics

Resources

License

Stars

Watchers

Forks

Contributors