Migrer depuis Vercel cron

Importer les entrées cron de vercel.json dans un manifeste SteadyCron en une seule commande — supprimer les restrictions une-fois-par-jour et UTC uniquement de Vercel.

Le plan hobby de Vercel limite les cron jobs à une fois par jour en UTC. Même sur les plans payants, les planifications sont liées à vercel.json — les modifier nécessite un redéploiement, il n’y a pas de relances, et les logs sont maigres sans alertes.

steadycron import vercel convertit les entrées cron de vercel.json en manifeste SteadyCron en une seule commande.

Démarrage rapide

# 1. Générer le manifeste (lit vercel.json dans le répertoire courant)
steadycron import vercel \
  --base-url https://app.example.com \
  --cron-secret-env CRON_SECRET \
  -o steadycron.yaml

# 2. Vérifier et valider
steadycron validate steadycron.yaml

# 3. Définir le secret et appliquer
echo "CRON_SECRET=votre-secret-ici" > secrets.env
steadycron apply steadycron.yaml --env-file secrets.env --namespace prod

Fonctionnement

L’importeur lit vercel.json (ou un chemin fourni en premier argument) et émet un job http GET par entrée cron, avec l’URL complète construite depuis --base-url + chemin et timezone: UTC.

--cron-secret-env NOM — au lieu d’incorporer la valeur du secret, le manifeste émet :

headers:
  Authorization: Bearer ${CRON_SECRET}

L’espace réservé ${…} est résolu à l’heure du sync/apply via --env-file ou l’environnement du processus. Le manifeste ne contient jamais le secret.

--dry-run — prévisualiser ce qui serait généré sans écrire de fichier.

Après la migration

Une fois que SteadyCron gère un job, supprimez (ou commentez) l’entrée correspondante dans vercel.json et redéployez — pour éviter de déclencher deux fois le même endpoint.

Ensuite, resserrez vos planifications et définissez des fuseaux horaires par job — deux capacités que Vercel n’expose pas.

Ce que vous gagnez

Vercel cronSteadyCron
Intervalle minimumUne fois par jour (hobby)Configurable (selon le plan)
Fuseau horaireUTC uniquementPar job, avec gestion DST
Relances en cas d’échecAucuneOui — configurable
Application des timeoutsAucuneOui — par job
Monitoring heartbeatNonOui
AlertesNonEmail, Slack, Discord, Telegram, webhook
Modifier le planningÉditer vercel.json + redéployerTableau de bord, CLI ou YAML — sans redéploiement
Journal d’exécutionLogs de plateforme, éphémèresStatut, body et durée par exécution

Prochaines étapes