Nouveau bundle LexikCronFileGeneratorBundle

17.04.2019  • Gilles Gauthier

Comme son nom l’indique, ou pas, ce bundle permets de générer un fichier pour vos tâches crons liées à un projet.

https://github.com/lexik/LexikCronFileGeneratorBundle

Au lieu de maintenir un document listant toutes les crons à définir sur vos serveurs, le bundle propose une configuration yaml pour enregistrer vos crons par environnement et par “serveur”.

Ci-dessous la configuration que vous allez pouvoir définir, exemple avec 2 environnements :

  • deux environnements : prod et staging
  • un utilisateur sur vos serveurs par environnement : project_prod et project_staging
  • une seule version de php (la règle est volontairement stricte à ce sujet, mélanger les versions de php en preprod et prod est une mauvaise pratique)
  • le chemin absolu vers votre projet
  • la destination où le fichier sera généré
  • une liste de crons par environnement

Ce qui donne avec le bundle :

lexik_cron_file_generator:
  env_available:                 # declare your env availables
    - staging                    # exemple: staging and prod
    - prod
  user:
    staging: project_staging
    prod: project_prod
  php_version: php7.3
  absolute_path:
    staging: path/to/staging/bin/console
    prod: path/to/prod/bin/console
  output_path: '%kernel.cache_dir%/cron_test'
  crons:
    - { name: 'Send email', command: 'app:test', env: { staging: '* * * * *', prod: '* 5 * * *' } }

Command

Pour générer le fichier il faudra exécuter la commande :

bin/console lexik:cron:generate-file --env-mode=prod  // --dry-run pour visualiser le résultat sans générer le fichier

Exemple de retour de commande :

Generate cron file
==================

 [OK] File generated

 ! [NOTE] path : /my-project/var/cache/cron_test

Exemple de fichier généré :

# Send email

* 5 * * * project_prod php7.3 path/to/prod/bin/console app:test --env=prod

Bonus

Si vous avez un outil de CI il vous sera simple de générer le fichier lors de vos déploiements automatique et être sûr que vos crons seront bien déclarées.

 

Lead développeur Symfony chez Spiriit.
Adepte de la satisfaction client, j'accompagne les clients dans la conception technique avancée et développe des projets souple et évolutif. Un seul mot d'ordre : Les tests.
Voir l’étude de cas
Lire l’article
Lire l’actualité
En savoir plus
En savoir plus
Voir le témoignage
Fermer