Introduccion a Forgejo Actions

Por: Artiko
forgejoci-cdactionsdevops

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
  1. Forgejo Server: detecta los eventos del repositorio, lee los archivos de workflow y crea las tareas (tasks) pendientes de ejecucion.

  2. Forgejo Runner: proceso externo que hace polling al servidor buscando tareas pendientes. Cuando encuentra una, la descarga y la ejecuta.

  3. 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:

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:

  1. El valor ENABLED = true este correcto en app.ini
  2. El servidor se haya reiniciado correctamente
  3. 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 —>