Resultado Github Labeler

Etiquetas

Las etiquetas en Github permiten ordenar y priorizar el trabajo tanto en issues como en pull request. De esta manera podemos ver tanto en la pull request como en los listados facilmente, posibles propiedades, como nivel de urgencia, tipo de issue/pr, etc.

Las etiquetas no tienen sentido ninguno si el equipo no tiene un consenso de lo que significa cada una. Con una tabla explicando cada valor con que descripción se corresponde.

El proceso de añadir etiquetas ha sido siempre manual en el momento de la creación de la issue/pr. Pero este proceso puede ser automatizado, para que en base a diferentes patrones se añadan distintas etiquetas.

Por ejemplo, en un proyecto que se realicen migraciones a la base de datos, es muy común tener una etiqueta migrations, indinando al revisor de la pull request que tiene que ejecutar las migraciones para probar el resultado.

Github Actions: Labeler

La Action de Github Labeler, nos permite conseguir justo esto con algunos patrones ya definidos.

Para continuar con el ejemplo anterior, suponiendo que nuestro proyecto tiene distintas divisiones de contextos, dominios, bundles o apps dentro del repositorio, y cada una de ellas puede tener migraciones, con esta estructura de directorios:

src/
   domain1/
      migrations/
         migration_file_1.php
         migration_file_2.php
      ...
   domain2/
      migrations/
         migration_file_1.php
      ...

La configuración que debemos añadir en el archivo .github/labeler.yml en la raiz del proyecto para identificar estos archivos, sería:

migrations:
  - src/*/migrations/*

Con esta expresión glob buscamos en todos los directorios dentro de src, y en cada uno de ellos tienen que tener un directorio en el siguiente nivel con migrations, y dentro de este directorio encontramos cualquier archivo.

Para leer y ejecutar este archivo, usaremos un workflow de github llamando al Action labeler, este archivo estará en .github/workflows/labeler.yml

name: Labeler
on:
- pull_request

jobs:
  triage:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/labeler@v2
      with:
        repo-token: "${{ secrets.GITHUB_TOKEN }}"