En esta actividad, vas a trabajar con GitHub Actions para automatizar tareas comunes en un flujo de desarrollo moderno. Implementarás un workflow que:
- Ejecuta un linter automáticamente sobre el código base para asegurar que sigue un estilo consistente.
- Envía un POST a nuestra API cada vez que se ejecuta el workflow.
- Controla la versión de tu aplicación modificando automáticamente este mismo archivo (
README.md
). - Modifica el README.md para agregar un timestamp que indique cuándo se ejecutó el workflow.
- Aprender a configurar workflows en GitHub Actions.
- Entender cómo automatizar chequeos de calidad de código.
- Trabajar con llamadas HTTP dentro de un pipeline.
- Controlar versiones automáticamente usando herramientas CLI o scripts.
- Modificar archivos directamente desde un pipeline.
-
Forkea este repositorio.
-
En la carpeta
.github/workflows/
crea un archivo llamadomain.yml
. -
Configura un workflow que se dispare en los siguientes eventos:
push
-
El workflow debe ejecutar las siguientes tareas:
- Si estás trabajando en JavaScript, usa
eslint
. - Asegúrate de que el linter falle el pipeline si encuentra errores.
- Usa
curl
o similares para hacer unPOST
al endpointhttps://pokemon-api-vpmj.onrender.com/cards
- El body del request debe tener el siguiente formato (esto es solo un ejemplo):
{ "nombre": "Charizard", "tipo": "Fuego", "faseEvolucion": "Fase 2", "puntosSalud": 120, "ataques": [ { "nombre": "Lanzallamas", "costoEnergia": ["Fuego", "Fuego", "Incolora"], "danio": "100", "descripcion": "Quema al Pokémon Defensor" } ] }
- La API debe responder con un
201
si el POST fue exitoso.
- Este
README.md
contiene un campo de versión como el siguiente:Versión actual: v1.0.6
- Tu workflow debe actualizar automáticamente este número de versión siguiendo el esquema
v<major>.<minor>.<patch>
, por ejemplo:v1.0.6
,v1.1.0
, etc. - Para simplificar, puedes incrementar siempre el patch (
v1.0.0
→v1.0.6
).
- Tu workflow también debe agregar un timestamp en el archivo
README.md
para indicar la última ejecución del workflow. Ejemplo:Última ejecución: 2025-04-11 17:33:22
- Si estás trabajando en JavaScript, usa
-
⏱️ Tiempo máximo de ejecución: Tu workflow debe completarse en menos de 3 minutos. Si se excede ese tiempo, la actividad no se considerará válida.
timeout 180s tu-comando-aqui
-
🖐️ Ejecución manual: Puedes agregar el siguiente bloque al inicio de tu archivo
main.yml
para permitir ejecutar el workflow de forma manual desde la interfaz de GitHub:on: workflow_dispatch:
Tu solución debe cumplir con los siguientes criterios:
- El workflow corre correctamente al hacer
push
- No se excede el tiempo máximo de ejecución.
- Se ejecuta un linter y el pipeline falla si hay errores.
- Se realiza exitosamente un
POST
al endpoint de la API Pokémon. - El número de versión en este archivo se actualiza automáticamente en cada ejecución.
- El
README.md
se modifica correctamente para incluir un timestamp.
¡Buena suerte! ⚙️