Utiliser les Scheduled Tasks Scalingo
20 Avril 2023 (mis à jour le 24 Juillet 2024)
Une scheduled task (ou tâche planifiée) est une opération programmée pour s'exécuter automatiquement à des moments prédéfinis ou selon des intervalles spécifiques. Par exemple transférer les données du CEJ vers vers un serveur externe.

Démarrage
Pour que Scalingo puisse reconnaître des Scheduled Tasks, il a besoin de trouver un fichier cron.json à la racine du
projet à déployer.
Exemple :
my-app
├─── build
│    ├── some-fichier.js
│    └── ...
├─── node_modules
│    ├── some-library
│    │   └── some-other-domain-service.ts
│    └── ...
├─── src
│    ├── some-fichier.js
│    └── ...
├─── test
│    ├── some-fichier.test.js
│    └── ...
├─── **cron.json**
├─── package.json
├─── package-lock.json
└─── ...
Déclarer une Scheduled Task
Dans le fichier cron.json créé précédemment, ajouter le squelette suivant :
{
  "jobs": []
}
Un job est un objet JSON ayant la forme suivante :
{
  "command": "* * * * * npm run ma:tache:programmee",
  "size": "M"
}
Penchons-nous sur les attributs et leur contenu :
commandest l'attribut dans lequel vous allez renseigner deux informations :- Le 
cron time, à savoir la fréquence à laquelle vous souhaitez exécuter le job - La commande à lancer, exemple 
node start.js. Il ne tient qu'à vous de définir vos propres commandes 
- Le 
 sizeest l'attribut permettant de spécifier la taille du conteneur dans lequel votre job va tourner sur Scalingo. Les valeurs possibles sont les suivantes :Spour 256 MB ;Mpour 512 MB ;Lpour 1 GB ;XLpour 2 GB ;2XLpour 4 GB.
Utilisez par défaut la valeur M et augmentez si besoin.
Periode d'inactivité des instances Scalingo
Dans le but d'économiser des ressources, certaines instances de tests sont désactivées pendant la nuit (ex: main-cms).
Comme le fichier cron.json ne dépend pas de l'environnement, il faut s'assurer de déclencher les jobs à un moment où les instances nécessaires sont disponibles.
Pour finir
Déployez votre nouvelle version de votre code sur Scalingo. Si le fichier cron.json est correctement renseigné, vous
verrez apparaître vos Scheduled Tasks dans l'onglet Ressources sur le panneau Scheduled Tasks comme ci-dessous :

Exemple de fichier cron.json
{
    "jobs": [
      {
        "command": "30 7 * * * npm run cli:transformation -- -a transform -f jobteaser",
        "size": "M"
      }, 
      {
        "command": "30 6 * * * npm run cli:transformation -- -a transform -f stagefr",
        "size": "S"
      } 
    ]
}