Descripción funcional
Tipo: Workflow de Forgejo Actions (repo central automatizaciones)
Script: automatizaciones/infra/espejo_releases.py
Frecuencia: Diario 06:30 Madrid (UTC+2 en verano, UTC+1 en invierno)
Runner: forgejo-runner en OPS (etiqueta self-hosted + hetzner)
Copia todas las Releases (metadatos + artefactos) desde GitHub a Forgejo. Resuelve un hueco detectado el 08-08-2026: el espejo nativo de Forgejo trae commits, ramas y tags, pero no copia las Releases ni sus descargas, dejando incompletos los espejos de Pro y workspace.
Problema resuelto
Ejemplo: Agent en GitHub publica releases con artefactos (Python wheels, ejecutables). En Forgejo, el espejo git traía los tags, pero no la Release en sí. Los artefactos no estaban disponibles en Forgejo para descarga.
Lógica (pseudocódigo de espejo_releases.py)
1. Enumerar todos los espejos de la organización (repos en Forgejo)
2. Para cada espejo:
a. Listar releases en GitHub (token: scope Contents, read-only)
b. Listar releases en Forgejo (token: cuenta `espejo`)
c. Diferencia: releases que faltan en Forgejo
3. Para cada release faltante:
a. Descargar el asset desde GitHub
b. Verificar tamaño descargado
c. Crear la release en Forgejo
d. Subir el asset
4. **Política de retención en Forgejo**: NUNCA borrar (archivo completo)
- GitHub: retiene solo la release vigente del Agente (limitación de espacio)
- Forgejo: acumula el histórico completo (almacenamiento, sin límite)
Credenciales y permisos
Almacenadas en STAGE (/opt/forgejo-espejo/):
- Token GitHub: scope
contents(lectura de releases + assets)- Reutiliza el token del espejo git (solo-lectura global)
- Token Forgejo: cuenta de servicio
espejo(creación de releases)
Los tokens se inyectan en el runner al iniciar el job.
Artifacts y releases en el contexto de F1
Este workflow es el primer ladrillo de F4 (“repos completos en Forgejo”):
- F1 (en curso): Automatismos en paralelo; GitHub manda
- F2: Inversión del origen de verdad (Forgejo principal)
- F3: Mudanza física de TODAS las automatizaciones a Forgejo
- F4: Repos “completos” (no solo git, sino releases, wiki, issues, proyectos; Forgejo = espejo de características)
Decisiones de Edu (08-08-2026)
- Colocación en repo central
automatizaciones: Todas las automatizaciones del ecosistema se centralizan. Prefijos:bib-*,wiki-*,infra-*,deploy-*(regla documentada en README deautomatizaciones). - Timezone: Europe/Madrid: Para que los
schedulesean claros (06:30 = mañana española). - Dogfooding: El repo
automatizacionescorre EN Forgejo Actions, no en GitHub. Es su propio caso de uso.
Véase también
- [[feature—infra—forgejo-f1-automatizaciones-paralelo]]
- [[concept—infra—ops-server]]
- [[entity—public—forgejo-backup-cron]]
- [[entity—public—forgejo-runner]]