[{"data":1,"prerenderedAt":223},["ShallowReactive",2],{"seo-verification":3,"blog-migrar-cicd-a-gitea-o-forgejo-sin-github-actions-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-migrar-cicd-a-gitea-o-forgejo-sin-github-actions-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":167,"ctaBody":168,"ctaButton":169,"ctaUrl":170,"relatedPosts":171},273,"migrar-cicd-a-gitea-o-forgejo-sin-github-actions",{"fr":12,"en":13,"ar":14,"es":10},"github-actions-payant-migrer-ci-cd-gitea-forgejo-vps","migrate-cicd-to-gitea-or-forgejo-leave-github-actions","gitea-وforgejo-بديل-github-actions-المدفوع-على-vps","Migrar su CI\u002FCD a Gitea o Forgejo: fuera de GitHub Actions","Desde marzo de 2026, GitHub cobra los minutos de CI en repositorios privados. Migre a Gitea Actions o Forgejo en un VPS: mismos archivos YAML, costo fijo.",11,0,false,"2026-08-16T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},2,"Automatización","automatisation","bg-brand-action\u002F10 text-brand-action",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fgithub-actions-payant-migrer-ci-cd-gitea-forgejo-vps-poster.svg",{"categorySlug":33,"appSlug":34},"desarrollo","gitea","Desde el 1 de marzo de 2026, los minutos de CI en los repositorios privados de GitHub se facturan por consumo. Para los equipos que encadenan pipelines — tests, lint, build Docker, despliegue — la factura mensual puede superar rápidamente el presupuesto dedicado al propio alojamiento. Gitea y Forgejo permiten recuperar el control: misma sintaxis YAML, misma lógica de runner, cero costo por minuto. Esta guía compara ambas opciones y detalla la instalación paso a paso en un VPS.",[37,41,53,56,102,105,127,130,145,148,157,161,164],{"type":38,"title":39,"body":40},"h2","Lo que ha cambiado en los precios de GitHub Actions","Hasta principios de 2026, los repositorios privados en GitHub disponían de una cuota mensual de minutos incluidos, según el plan contratado. Ese modelo ha cambiado: desde el 1 de marzo de 2026, GitHub ha reducido los umbrales incluidos y ha generalizado la facturación por minuto para los runners Linux alojados por GitHub en los planes inferiores a GitHub Team y GitHub Enterprise.\n\nLos runners autoalojados (self-hosted), en cambio, nunca han sido facturados por GitHub: consumen sus propios recursos. Ese es precisamente el margen que aprovechan Gitea Actions y Forgejo Actions: al alojar su forja en un VPS, lleva sus pipelines a un runner que usted controla, sin contador de GitHub.\n\nEl argumento no es solo económico. Los datos de sus repositorios privados dejan de pasar por la infraestructura de GitHub. Los pipelines se ejecutan en el entorno de red que usted elija, algo útil si su despliegue apunta a una red privada o a un clúster interno. Y la forja sigue accesible incluso ante una caída o una restricción externa.",{"type":42,"title":43,"items":44},"ul","Por qué migrar su CI\u002FCD a una forja autoalojada",[45,46,47,48,49,50,51,52],"**Costo variable eliminado** — el runner se ejecuta en su VPS: cada minuto de CI es un recurso ya pagado, no una línea de facturación adicional.","**Confidencialidad de los pipelines** — el código fuente, los secretos de entorno y los artefactos de compilación no salen de su infraestructura.","**Compatibilidad YAML** — `.gitea\u002Fworkflows\u002Fci.yml` sigue la misma sintaxis que `.github\u002Fworkflows\u002Fci.yml`; migrar un pipeline existente casi siempre se reduce a mover un archivo.","**Control total de las imágenes de runner** — usted elige las versiones de PHP, Node, Python o Docker sin depender del catálogo de GitHub.","**Forja ligera** — Gitea funciona con 200 a 300 MB de RAM para los repositorios y `act_runner` consume unos 50 MB por job; un VPS con 1 GB de RAM basta para un equipo pequeño.","**Independencia de servicio** — sus pipelines siguen ejecutándose sea cual sea la disponibilidad o la política de precios de la plataforma upstream.","**Gestión unificada de los accesos** — los permisos, los equipos y los webhooks viven en su instancia, sin delegar el acceso a un tercero.","**Almacenamiento de artefactos bajo su control** — los binarios, las imágenes Docker y los informes de cobertura se guardan donde usted decida.",{"type":38,"title":54,"body":55},"Requisitos previos","Antes de instalar Gitea o Forgejo, compruebe que su VPS cumple los siguientes criterios.\n\n**RAM**: 1 GB como mínimo para una forja pequeña (hasta 5 desarrolladores, pipelines simples). Cuente 2 GB si activa varios runners en paralelo o si sus jobs compilan imágenes Docker.\n\n**CPU**: 1 vCPU basta para la forja en sí; los jobs de CI consumen lo que usted les asigne mediante la configuración del runner.\n\n**Almacenamiento**: 20 GB para empezar — los repositorios Git y los artefactos de pipeline crecen rápido según su actividad.\n\n**Puerto público**: el puerto 22 (SSH Git) o un puerto alternativo, y el puerto 443 (HTTPS). El puerto 3000 lo usa Gitea\u002FForgejo internamente; no debe exponerse directamente.\n\n**Dominio**: es muy recomendable un subdominio dedicado (`git.sudominio.com`) — los webhooks GitHub→Gitea, las claves SSH y las URL de clonado se apoyan en un nombre estable.\n\n**Docker**: Gitea y Forgejo se despliegan limpiamente con Docker Compose, que simplifica las actualizaciones y el aislamiento de los procesos.",{"type":57,"title":58,"headers":59,"rows":64},"comparison","Gitea Actions vs Forgejo Actions vs Woodpecker CI",[60,61,62,63],"Criterio","Gitea Actions","Forgejo Actions","Woodpecker CI",[65,70,75,79,83,88,92,97],[66,67,68,69],"Origen","Fork de Gogs, ~47 000 estrellas en GitHub, licencia MIT","Hard-fork de Gitea desde dic. 2022, impulsado por Codeberg, licencia AGPL-3.0","CI externa, open source, funciona con Gitea\u002FForgejo\u002FGitHub",[71,72,73,74],"Runner","act_runner (el mismo binario)","act_runner (el mismo binario, versión Forgejo)","Agente Woodpecker dedicado (woodpecker-agent)",[76,77,77,78],"Sintaxis de workflow","Compatible con `.github\u002Fworkflows\u002F*.yml`","Sintaxis YAML propia, no compatible con GitHub Actions",[80,81,81,82],"Esfuerzo de migración","Mover el archivo YAML a `.gitea\u002Fworkflows\u002F`","Reescribir los workflows en el formato Woodpecker",[84,85,86,87],"Gobernanza","Empresa comercial (Gitea Ltd)","Colectivo de colaboradores independientes (Codeberg e.V.)","Comunidad, sin entidad comercial detrás",[89,90,90,91],"Consumo de memoria de la forja","~200-300 MB de RAM para repos","Requiere además una forja (Gitea\u002FForgejo)",[93,94,95,96],"Actualizaciones","Releases frecuentes, canal estable disponible","Releases alineadas con Gitea + correcciones propias","Ciclo de release independiente",[98,99,100,101],"Caso de uso principal","Forja ligera con CI integrada, migración desde GitHub","Forja ligera, CI integrada, preferencia por la gobernanza libre","CI autónoma avanzada, pipelines multietapa complejos",{"type":38,"title":103,"body":104},"Opción A: Gitea con act_runner","Gitea es un fork de Gogs mantenido activamente desde 2016, hoy con unas 47 000 estrellas en GitHub y licencia MIT. Desde la versión 1.19 incluye un motor de Actions compatible con la sintaxis de GitHub Actions, impulsado por `act_runner`.",{"type":106,"title":107,"steps":108},"steps","Instalación de Gitea y del runner",[109,112,115,118,121,124],{"title":110,"body":111},"Crear el archivo Docker Compose","Cree un directorio de trabajo y un archivo `docker-compose.yml`:\n\n```yaml\nservices:\n  gitea:\n    image: gitea\u002Fgitea:latest\n    container_name: gitea\n    environment:\n      - USER_UID=1000\n      - USER_GID=1000\n      - GITEA__actions__ENABLED=true\n    volumes:\n      - .\u002Fgitea-data:\u002Fdata\n      - \u002Fetc\u002Ftimezone:\u002Fetc\u002Ftimezone:ro\n      - \u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro\n    ports:\n      - \"3000:3000\"\n      - \"222:22\"\n    restart: unless-stopped\n```\n\nActive `GITEA__actions__ENABLED=true` desde el principio: sin esa variable, la pestaña Actions no aparece en la interfaz.",{"title":113,"body":114},"Iniciar Gitea y completar la instalación inicial","Inicie el contenedor y abra `http:\u002F\u002F\u003Csu-ip>:3000` en un navegador. El asistente de instalación le pide el tipo de base de datos (SQLite basta para una forja pequeña), el nombre del servidor y la URL externa. Introduzca la URL HTTPS que va a configurar (`https:\u002F\u002Fgit.sudominio.com`) — queda escrita en la configuración y sirve de base para las URL de clonado y los webhooks.\n\nCree la cuenta de administrador desde ese asistente.",{"title":116,"body":117},"Configurar el reverse proxy y el TLS","Coloque Gitea detrás de nginx con un certificado Let's Encrypt. Ejemplo de bloque `server`:\n\n```nginx\nserver {\n    listen 443 ssl;\n    server_name git.sudominio.com;\n    ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fgit.sudominio.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fgit.sudominio.com\u002Fprivkey.pem;\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n    }\n}\n```\n\nObtenga el certificado con `certbot certonly --nginx -d git.sudominio.com` y recargue nginx.",{"title":119,"body":120},"Crear un token de runner en Gitea","Inicie sesión en su instancia Gitea como administrador. Vaya a **Administración del sitio → Runners → Crear un runner**. Copie el token mostrado — se usará en el paso siguiente para registrar `act_runner`.",{"title":122,"body":123},"Desplegar act_runner","Añada el servicio `act_runner` a su `docker-compose.yml`:\n\n```yaml\n  act_runner:\n    image: gitea\u002Fact_runner:latest\n    container_name: act_runner\n    environment:\n      - GITEA_INSTANCE_URL=https:\u002F\u002Fgit.sudominio.com\n      - GITEA_RUNNER_REGISTRATION_TOKEN=\u003Csu-token>\n      - GITEA_RUNNER_NAME=vps-runner\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      - .\u002Frunner-data:\u002Fdata\n    restart: unless-stopped\n    depends_on:\n      - gitea\n```\n\nVuelva a lanzar con `docker compose up -d`. El runner aparece en la interfaz de Gitea en **Administración del sitio → Runners** con el estado **Idle**.",{"title":125,"body":126},"Enviar un workflow de prueba","En uno de sus repositorios Gitea, cree el archivo `.gitea\u002Fworkflows\u002Fci.yml`:\n\n```yaml\nname: CI\non: [push]\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Verificación\n        run: echo \"Pipeline activo en Gitea Actions\"\n```\n\nHaga push de un commit. El job aparece en la pestaña **Actions** del repositorio y se ejecuta en su runner VPS.",{"type":38,"title":128,"body":129},"Opción B: Forgejo con act_runner","Forgejo es un hard-fork de Gitea iniciado en diciembre de 2022 por la comunidad Codeberg y distribuido bajo licencia AGPL-3.0. Comparte la misma sintaxis de workflow y el mismo binario `act_runner`, con una gobernanza comunitaria y un ciclo de correcciones independiente. Para los equipos sensibles a las cuestiones de gobernanza o de licencia, Forgejo es la alternativa directa a Gitea — la experiencia de usuario y la compatibilidad YAML son idénticas.",{"type":106,"title":131,"steps":132},"Diferencias de instalación respecto a Gitea",[133,136,139,142],{"title":134,"body":135},"Sustituir la imagen Docker","En su `docker-compose.yml`, sustituya la imagen de Gitea por la imagen oficial de Forgejo:\n\n```yaml\nservices:\n  forgejo:\n    image: codeberg.org\u002Fforgejo\u002Fforgejo:latest\n    container_name: forgejo\n    environment:\n      - USER_UID=1000\n      - USER_GID=1000\n      - FORGEJO__actions__ENABLED=true\n    volumes:\n      - .\u002Fforgejo-data:\u002Fdata\n    ports:\n      - \"3000:3000\"\n      - \"222:22\"\n    restart: unless-stopped\n```\n\nLa variable de entorno pasa de `GITEA__` a `FORGEJO__` para los parámetros propios de Forgejo.",{"title":137,"body":138},"Usar el runner de Forgejo","Forgejo mantiene su propia versión de `act_runner`. Use la imagen publicada en el registro de Codeberg:\n\n```yaml\n  act_runner:\n    image: code.forgejo.org\u002Fforgejo\u002Frunner:latest\n    container_name: forgejo_runner\n    environment:\n      - FORGEJO_INSTANCE_URL=https:\u002F\u002Fgit.sudominio.com\n      - FORGEJO_RUNNER_REGISTRATION_TOKEN=\u003Csu-token>\n      - FORGEJO_RUNNER_NAME=vps-runner\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      - .\u002Frunner-data:\u002Fdata\n    restart: unless-stopped\n```",{"title":140,"body":141},"Obtener el token de runner en Forgejo","El procedimiento es idéntico al de Gitea: **Administración del sitio → Runners → Crear un runner**. El token es de un solo uso — anótelo antes de cerrar la página.",{"title":143,"body":144},"Colocar sus workflows en `.gitea\u002Fworkflows\u002F`","Forgejo lee los archivos de workflow en el mismo directorio que Gitea: `.gitea\u002Fworkflows\u002F`. Un workflow escrito para GitHub Actions o Gitea Actions funciona sin modificaciones. La única restricción: la acción `actions\u002Fcheckout@v4` y sus equivalentes se resuelven mediante la caché de acciones de su instancia — la primera ejecución las descarga y las siguientes las reutilizan.",{"type":38,"title":146,"body":147},"Compatibilidad YAML con GitHub Actions","El punto de compatibilidad más subestimado: `.gitea\u002Fworkflows\u002Fci.yml` y `.github\u002Fworkflows\u002Fci.yml` comparten la misma gramática. Los eventos disparadores (`push`, `pull_request`, `schedule`), los jobs, los steps, las matrices y las condiciones `if:` funcionan de la misma manera.\n\nUn workflow típico de GitHub:\n\n```yaml\nname: Tests\non:\n  push:\n    branches: [main, dev]\n  pull_request:\n\njobs:\n  phpunit:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Setup PHP\n        uses: shivammathur\u002Fsetup-php@v2\n        with:\n          php-version: '8.4'\n      - run: composer install --no-interaction\n      - run: vendor\u002Fbin\u002Fphpunit\n```\n\nEse archivo, copiado en `.gitea\u002Fworkflows\u002Fci.yml`, se ejecuta tal cual en Gitea Actions o Forgejo Actions. Las acciones del marketplace de GitHub (`actions\u002Fcheckout`, `shivammathur\u002Fsetup-php`, etc.) se descargan desde GitHub en la primera ejecución y se guardan en caché localmente.\n\nUn límite que conviene conocer: algunas acciones propietarias o específicas de GitHub (OIDC, CodeQL, Dependabot) no tienen equivalente directo y deben sustituirse por alternativas open source o por scripts de shell.",{"type":42,"title":149,"items":150},"Ventajas comparativas de un runner self-hosted",[151,152,153,154,155,156],"**Costo fijo y previsible** — solo paga el VPS, sea cual sea la frecuencia de sus pipelines.","**Confidencialidad** — el código fuente, las variables de entorno y los artefactos de compilación no pasan por un servicio de terceros.","**Personalización del runner** — instale las dependencias del sistema, las herramientas propias de su stack o las imágenes Docker privadas directamente en el runner.","**Red interna accesible** — un job puede alcanzar una base de datos de staging o un registry Docker privado en su red sin exposición pública.","**Despliegues sin tránsito de red** — el runner se ejecuta en el mismo centro de datos que su servidor de destino; los artefactos de compilación se copian localmente, sin pasar por los servidores de GitHub.","**Archivado bajo su control** — los logs de pipeline y los artefactos se conservan tanto tiempo como usted decida, sin límite impuesto por la plataforma.",{"type":158,"title":159,"body":160},"tip","Endurecimiento de la instalación","Un runner autoalojado expone su infraestructura si su configuración es laxa. Tres puntos que conviene revisar antes de poner su instancia en producción.\n\nPrimer punto: **no exponga la interfaz de administración de Gitea\u002FForgejo en Internet**. Colóquela detrás del reverse proxy con la autenticación de dos factores activada y, si es posible, una restricción por IP o una VPN para el acceso de administrador.\n\nSegundo punto: **el token del runner es de un solo uso y debe permanecer secreto**. Una vez registrado el runner, el token ya no tiene valor — pero si se filtra antes del registro, un tercero puede crear un runner malicioso en su instancia.\n\nTercer punto: **aísle el runner en una red Docker dedicada**, separada de la forja. Un job comprometido no debe poder alcanzar el contenedor de Gitea\u002FForgejo por la red interna de Docker. Declare dos redes en su `docker-compose.yml` y conceda al runner solo el acceso a Internet y a lo que necesiten sus pipelines.",{"type":38,"title":162,"body":163},"Resolución de problemas — errores frecuentes","**El runner permanece en estado «Offline» tras el arranque.** Compruebe que `GITEA_INSTANCE_URL` (o `FORGEJO_INSTANCE_URL`) apunta a la URL HTTPS pública de su forja, no a `localhost` ni a la IP interna. El runner se conecta desde fuera del contenedor.\n\n**La pestaña Actions no aparece en la interfaz.** La variable `GITEA__actions__ENABLED=true` (o `FORGEJO__actions__ENABLED=true`) debe estar presente al arrancar el contenedor. Un simple reinicio sin esa variable no basta: detenga el contenedor, añada la variable y vuelva a lanzarlo con `docker compose up -d`.\n\n**La acción `actions\u002Fcheckout@v4` falla con un error de resolución.** Gitea y Forgejo intentan descargar las acciones desde GitHub en la primera ejecución. Si su VPS no puede alcanzar `github.com`, configure un espejo local de acciones en la sección `[actions]` de `app.ini` con la clave `DEFAULT_ACTIONS_URL`.\n\n**El job arranca y se detiene de inmediato con «exit code 137».** Es una señal OOM (Out Of Memory) del kernel. La imagen de runner (`ubuntu-latest`) carga varias herramientas en memoria. Aumente la RAM disponible en su VPS o reduzca el paralelismo (`max_parallel_jobs` en la configuración del runner) para evitar varios jobs simultáneos en un host infradimensionado.",{"type":38,"title":165,"body":166},"Recupere el control de su CI\u002FCD","Gitea y Forgejo ofrecen el mismo nivel de compatibilidad con sus workflows de GitHub Actions existentes, con perfiles de gobernanza distintos — MIT para Gitea, AGPL-3.0 y colectivo independiente para Forgejo. En ambos casos, `act_runner` se instala en unos minutos en un VPS estándar y sus pipelines migran sin reescritura.\n\nSi ya utiliza una plantilla VPS Gitea en ServOrbit, el runner puede ejecutarse en la misma instancia o en un VPS dedicado según la carga de sus pipelines. La guía detallada de instalación de Gitea está disponible a continuación — cubre las opciones de almacenamiento, la configuración SMTP y la copia de seguridad automatizada.\n\nPara desplegar Gitea en un VPS en unos minutos, consulte nuestra guía: \u003Ca href=\"\u002Fblog\u002Fheberger-gitea\">Alojar Gitea en un VPS\u003C\u002Fa>.","Despliegue su forja Git en un VPS","Gitea está disponible como plantilla VPS en ServOrbit. Su instancia queda operativa en unos minutos, con Docker, nginx y un certificado TLS preconfigurados. Añada `act_runner` y sus pipelines se ejecutan en su infraestructura desde la primera hora.","Desplegar Gitea","\u002Fmarketplace\u002Fdesarrollo\u002Fgitea",[172,193,208],{"id":173,"slug":174,"slugs":175,"title":179,"excerpt":180,"readTime":181,"views":18,"isPinned":19,"publishedAt":182,"updatedAt":21,"category":183,"categories":189,"featuredImage":29,"bgImage":30,"posterImage":191,"relatedSolution":192},74,"alojar-gitea-en-un-vps",{"fr":176,"en":177,"ar":178,"es":174},"heberger-gitea","host-gitea-on-your-own-vps","استضافة-gitea-على-خادم-vps-الخاص-بك","Alojar Gitea en su propio VPS en 2026","Despliegue Gitea en un VPS con Docker y SSL. Guía completa: instalación, migración a Forgejo v16 y comparativa de gobernanza.",8,"2026-04-07T00:00:00+00:00",{"id":184,"name":185,"slug":186,"color":187,"icon":188},7,"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[190],{"id":184,"name":185,"slug":186,"color":187,"icon":188},"\u002Fblog\u002Fcovers\u002Fheberger-gitea-poster.svg",{"categorySlug":33,"appSlug":34},{"id":194,"slug":195,"slugs":196,"title":200,"excerpt":201,"readTime":202,"views":23,"isPinned":19,"publishedAt":203,"updatedAt":21,"category":204,"categories":205,"featuredImage":29,"bgImage":30,"posterImage":207,"relatedSolution":29},75,"alojar-forgejo-en-un-vps",{"fr":197,"en":198,"ar":199,"es":195},"heberger-forgejo","host-forgejo-on-your-own-vps","استضافة-forgejo-على-خادم-vps-الخاص-بك","Alojar Forgejo en su VPS: guía completa 2025","Instale Forgejo en su VPS con Docker, SSL, runners Actions y seguridad reforzada. Guía paso a paso de 1900 palabras para una forja Git soberana.",9,"2026-04-06T00:00:00+00:00",{"id":184,"name":185,"slug":186,"color":187,"icon":188},[206],{"id":184,"name":185,"slug":186,"color":187,"icon":188},"\u002Fblog\u002Fcovers\u002Fheberger-forgejo-poster.svg",{"id":209,"slug":210,"slugs":211,"title":215,"excerpt":216,"readTime":17,"views":217,"isPinned":19,"publishedAt":218,"updatedAt":21,"category":219,"categories":220,"featuredImage":29,"bgImage":30,"posterImage":222,"relatedSolution":29},212,"woodpecker-ci-forgejo-pipeline-cicd-vps",{"fr":212,"en":213,"ar":214,"es":210},"woodpecker-ci-pipeline-vps-forgejo","woodpecker-ci-and-forgejo-cicd-pipeline-on-a-vps","woodpecker-ci-وforgejo-خط-أنابيب-cicd-على-خادم-vps","Woodpecker CI y Forgejo: pipeline CI\u002FCD en un VPS","Despliega Woodpecker CI v3 con Forgejo en tu VPS: configuración Docker Compose, pipelines YAML, secretos, runners multi-arquitectura y depuración OAuth.",1,"2026-08-02T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[221],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fwoodpecker-ci-pipeline-vps-forgejo-poster.svg",1789665026298]