Introduccion a Forgejo Actions
Capitulo 14: Introduccion a Forgejo Actions
Forgejo Actions es el sistema de integracion y entrega continua (CI/CD) integrado directamente en Forgejo. Permite automatizar tareas como ejecutar pruebas, construir imagenes Docker o desplegar aplicaciones cada vez que se realizan cambios en un repositorio.
Que son Forgejo Actions
Forgejo Actions es un sistema de automatizacion basado en workflows definidos como archivos YAML. Cuando ocurre un evento en el repositorio (un push, un pull request, la creacion de un tag), Forgejo busca los archivos de workflow correspondientes y los ejecuta.
El sistema es intencionalmente compatible con el formato de GitHub Actions. Esto significa que la sintaxis de los archivos YAML es en gran medida la misma, lo que facilita migrar pipelines existentes o aprovechar la documentacion y ejemplos disponibles para GitHub Actions.
Diferencias clave con GitHub Actions
Aunque la compatibilidad es alta, existen diferencias importantes que debes conocer antes de empezar:
Directorio de workflows
En GitHub Actions los workflows van en .github/workflows/. En Forgejo Actions el directorio es:
.forgejo/workflows/
Esta es la diferencia mas comun que causa confusion al migrar desde GitHub.
Runners propios
GitHub Actions ofrece runners hospedados en sus servidores (ubuntu-latest, windows-latest, macos-latest). Forgejo no tiene runners propios en la nube. Tu debes instalar y mantener el proceso Forgejo Runner en tu infraestructura.
Esto tiene ventajas: control total sobre el entorno, sin limites de minutos gratuitos, acceso a recursos privados de red. Y desventajas: responsabilidad de mantener los runners disponibles y actualizados.
Compatibilidad del marketplace
Las actions publicadas en el marketplace de GitHub (por ejemplo actions/checkout, actions/setup-node) en su mayoria funcionan con Forgejo Actions, pero no todas. Las actions que usen APIs exclusivas de GitHub o funcionalidades muy especificas pueden fallar.
Las actions mantenidas oficialmente por el proyecto Forgejo estan disponibles en code.forgejo.org/actions/.
Forgejo Runner vs GitHub Runner
El proceso que ejecuta los jobs se llama Forgejo Runner y es un binario independiente que debes instalar. No es compatible directamente con el runner de GitHub ni con el de GitLab.
Arquitectura del sistema
El sistema tiene tres componentes principales que trabajan juntos:
Forgejo Server
|
| (polling via API)
|
Forgejo Runner <---> Docker / Shell
-
Forgejo Server: detecta los eventos del repositorio, lee los archivos de workflow y crea las tareas (tasks) pendientes de ejecucion.
-
Forgejo Runner: proceso externo que hace polling al servidor buscando tareas pendientes. Cuando encuentra una, la descarga y la ejecuta.
-
Entorno de ejecucion: cada job puede ejecutarse dentro de un contenedor Docker (aislado) o directamente en el shell del runner (sin aislamiento).
El runner no necesita estar en el mismo servidor que Forgejo. Puede estar en cualquier maquina con acceso de red al servidor.
Que es un runner
Un runner es un proceso que escucha tareas del servidor Forgejo y las ejecuta. Sus caracteristicas principales son:
- Se identifica ante el servidor con un token de registro
- Tiene una o varias labels que indican que tipo de jobs puede manejar (por ejemplo:
ubuntu-latest,self-hosted,docker) - Puede ejecutar multiples jobs en paralelo (configurable)
- El servidor asigna jobs a runners segun las labels requeridas en el workflow
Un mismo servidor Forgejo puede tener multiples runners registrados. Pueden estar en distintas maquinas, con distintas capacidades (mas CPU, GPU, arquitecturas ARM, etc.).
Habilitar Actions en Forgejo
Por defecto, Forgejo Actions puede estar deshabilitado. Para habilitarlo debes editar el archivo de configuracion app.ini.
Abre el archivo (la ruta depende de tu instalacion, en Docker suele estar en el volumen de configuracion):
# Ejemplo con instalacion Docker
docker exec -it forgejo cat /etc/gitea/app.ini
Agrega o modifica la seccion [actions]:
[actions]
ENABLED = true
Si el archivo tiene otras secciones, asegurate de colocar [actions] como una seccion separada, no anidada dentro de otra.
Ejemplo de fragmento completo del app.ini:
[server]
DOMAIN = git.ejemplo.com
HTTP_PORT = 3000
ROOT_URL = https://git.ejemplo.com/
[database]
DB_TYPE = postgres
HOST = db:5432
NAME = forgejo
[actions]
ENABLED = true
Reiniciar Forgejo
Despues de modificar app.ini es obligatorio reiniciar el servidor para que los cambios tomen efecto:
# Con Docker Compose
docker compose restart forgejo
# Con systemd (instalacion nativa)
sudo systemctl restart forgejo
Para verificar que Actions esta habilitado, inicia sesion como administrador y navega a:
Site Administration > Configuration
Busca la seccion de Actions en la lista de configuraciones del sistema.
Verificar en la interfaz
Una vez habilitado, en cualquier repositorio deberia aparecer la pestana Actions en el menu superior. Si no aparece, verifica que:
- El valor
ENABLED = trueeste correcto enapp.ini - El servidor se haya reiniciado correctamente
- El usuario tenga permisos suficientes en el repositorio
Con Actions habilitado, el siguiente paso es instalar y registrar al menos un runner para que los workflows puedan ejecutarse.
Siguiente: Capitulo 15: Configurar Forgejo Runner —>