Guías

Jobs y cron

Un job se ejecuta hasta terminar en lugar de servir tráfico: informes nocturnos, tareas de limpieza, importaciones de datos, scripts puntuales.

Dos tipos de job

TipoComportamiento
PuntualSe ejecuta una vez al crearlo. Úsalo para migraciones, rellenos de datos y scripts de un solo uso.
ProgramadoSe ejecuta repetidamente según una programación cron. Úsalo para todo lo que sea periódico.

Un job pasa a ser programado con solo tener una programación; sin ella, se ejecuta una única vez.

Crear un job

Abre el lienzo del entorno, añade un job (+ Añadir servicio → Job / Cron) y dale una imagen, un comando y, si quieres, una programación. Lo normal es que un job use la misma imagen que tu app, así que ya tiene tu código y tus dependencias. La CLI, la API HTTP y las herramientas MCP también pueden crear jobs:

bash
$ codaracloud jobs create nightly-report \    --client my-workspace --project website --environment production \    --image ghcr.io/acme/report:2026.08.19 \    --command npm --arg run --arg report \    --schedule "0 3 * * *"
CampoSignificado
ImagenLa imagen de contenedor que se ejecuta. Usa la imagen de tu app para reutilizar tu código.
ComandoLo que se ejecuta, por ejemplo npm run send-digests.
ProgramaciónUna expresión cron. Déjala vacía para un job puntual.
EntornoEl entorno al que pertenece: hereda el aislamiento de ese entorno y puede acceder a sus bases de datos.

Programaciones cron

ExpresiónSe ejecuta
0 3 * * *Cada día a las 03:00
*/15 * * * *Cada 15 minutos
0 9 * * 1Los lunes a las 09:00
0 0 1 * *El primer día de cada mes, a medianoche

Bases de datos y jobs

Un job de un entorno puede conectarse a las bases de datos de ese entorno igual que una app, y Codara espera a que esas dependencias estén listas antes de arrancar el job. Un informe nocturno puede consultar el mismo Postgres que usa tu API sin que tengas que configurar credenciales.

Seguir un job

bash
$ codaracloud jobs list --client my-workspace --project website --environment production $ codaracloud jobs get nightly-report --client my-workspace --environment production $ codaracloud jobs image nightly-report ghcr.io/acme/report:2026.08.19 --client my-workspace --environment production $ codaracloud jobs logs nightly-report --client my-workspace --tail 500

La opción es --environment, no --env

Los comandos jobs usan el nombre completo de la opción del entorno, a diferencia de la mayoría de los demás grupos de comandos. --client es obligatoria.

Los logs de un job muestran solo las últimas líneas (hasta 1.000), no un flujo en directo, y las credenciales que aparecen en la salida se ocultan. Los logs solo se conservan mientras exista la ejecución correspondiente, así que guarda lo que necesites conservar.

Volver a ejecutar y cambiar un job

Un job puntual no se puede modificar una vez creado. Para ejecutarlo de nuevo, usa la acción de ejecutar de la consola o codaracloud jobs rerun, que lanza una ejecución nueva con la misma definición. Para cambiar lo que hace, elimínalo (codaracloud jobs delete <job> --yes) y vuelve a crearlo. Un job puntual en ejecución se puede detener con codaracloud jobs stop <job> --wait; los jobs programados no se pueden detener así.

Un job programado sigue ejecutándose según su programación hasta que lo eliminas, lo suspendes mediante la API o la herramienta MCP, o pausas su entorno. Puedes fijar una imagen OCI nueva para las próximas ejecuciones con jobs image; su programación, su comando, sus argumentos, sus conexiones y sus recursos se mantienen. Las ejecuciones en curso o terminadas no se modifican.

Buenas prácticas

  • Haz que los jobs sean idempotentes. Un job se puede reintentar o ejecutar dos veces; ejecutarlo dos veces no debería causar daños.
  • Que sean cortos. El trabajo de larga duración funciona mejor como app worker que como job cron.
  • Sal con un código distinto de cero si falla. Así sabe Codara que la ejecución ha fallado.
  • Registra en los logs lo que ha pasado. Se conservan poco tiempo, pero una ejecución fallida es mucho más fácil de diagnosticar cuando la salida dice qué estaba haciendo.
  • Para las migraciones, mejor un comando previo al deploy. Si las migraciones se ejecutan como parte de la release, una migración fallida detiene la release. Consulta Build y deploy.

Los jobs usan la capacidad de tu plan

La CPU y la memoria de un job tienen que caber en el tamaño máximo de servicio de tu plan; si no, su creación o ejecución se rechaza con 402 plan_limit_exceeded. Consulta Planes y capacidad.

Última actualización: