Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sous le capot de Castor, le task runner PHP

Sous le capot de Castor, le task runner PHP

Castor, c’est ce task runner open source que nous avons créé chez JoliCode pour exécuter des tâches aussi simplement qu'avec make.

Derrière cette simplicité apparente, le projet cache une mécanique interne plus riche qu’il n’y paraît :

une bonne quantité d’exemples qui servent à la fois d’inspiration pour les utilisateurs, d’illustration pour la documentation, mais surtout de suite de tests automatisés ;
une documentation toujours à jour avec les fonctionnalités ;
un système de release avec phars et binaires construits automatiquement.

Dans ce talk, je vous emmène sous le capot de Castor pour montrer comment tout cela s’articule, les choix techniques qui ont guidé sa conception, et quelques astuces glanées au passage.

Avatar for Loïck Piera

Loïck Piera

May 22, 2026

More Decks by Loïck Piera

Other Decks in Programming

Transcript

  1. Inside Castor - Loick Piera - Mai 2026 - Inside

    Castor Sous le capot de Castor, le task runner PHP
  2. Inside Castor - Loick Piera - Mai 2026 - Coucou,

    c'est moi ! Loïck Piera, amateur de drone, moto, domotique et bricolage Développeur chez depuis 2015 2 loickpiera.com @pyrech @pyrech @[email protected] @pyrech.bsky.social
  3. Inside Castor - Loick Piera - Mai 2026 - Qui

    a déjà entendu parler de Castor ? 3
  4. Inside Castor - Loick Piera - Mai 2026 - Castor

    : présentation express Photo Rémi Masson
  5. Inside Castor - Loick Piera - Mai 2026 - Kesako

    ? Task runner PHP, alternative à Make, Fabric, Robo Developer eXperience +++ Documentation : https://castor.jolicode.com/docs/ 5
  6. Inside Castor - Loick Piera - Mai 2026 - Un

    simple fichier castor.php 6
  7. Inside Castor - Loick Piera - Mai 2026 - Fonctionnalités

    Pleins d'utilitaires natifs : https://castor.jolicode.com/docs/reference/ Écosystème PHP : Composants Symfony, Monolog, etc. Autocomplete : CLI et IDE Extensible : events, repack, compilation, etc. 7
  8. Inside Castor - Loick Piera - Mai 2026 - Au

    cœur du Castor © Mirage3 / Dreamstime
  9. Inside Castor - Loick Piera - Mai 2026 - Fonctionnement

    de Castor • Démarrage de l'application symfony/console • Boot du Kernel de Castor • Recherche et chargement de l'entrypoint ◦ Fichier castor.php ou .castor/castor.php dans le dossier courant ◦ Itération dans le dossier parent • Chargement de tous les fichiers du projet : 9
  10. Inside Castor - Loick Piera - Mai 2026 - Fonctionnement

    de Castor • Récupération des fonctions définies dans le projet • Parcours des attributs PHP ◦ #[AsTask] => task ajouté comme Command dans l'application Symfony ◦ #[AsListener] => ajout des listeners dans l'EventDispatcher ◦ #[AsContext], #[AsContextGenerator] => chargement des Contexts 10
  11. Inside Castor - Loick Piera - Mai 2026 - Tirer

    partie de l'écosystème PHP • symfony/console ◦ Input, Output et SymfonyStyle ◦ Command (une task Castor = une Command Symfony) ◦ list, help, autocomplete • symfony/process ◦ run() ◦ exit_code() ◦ capture() ◦ Process 11
  12. Inside Castor - Loick Piera - Mai 2026 - Tirer

    partie de l'écosystème PHP • Composer ◦ Remote imports ◦ Remote execution • Monolog ◦ log() ◦ LoggerInterface • et pleiiiin d'autres ◦ symfony/http-client|cache|filesystem|finder|string|yaml, spatie/ssh 12
  13. Inside Castor - Loick Piera - Mai 2026 - Documentation

    Driven Development © ParlonsPlanet.com
  14. Inside Castor - Loick Piera - Mai 2026 - Documentation

    markdown 15 • Séparées en 2 rubriques ◦ Usages basiques : Getting started ◦ Usages avancés : Going Further • Site construit avec MkDocs ◦ build + deploy automatiquement à chaque push sur main
  15. Inside Castor - Loick Piera - Mai 2026 - Le

    référentiel • Toutes les fonctions helpers documentées • Test PHPUnit qui s'en assure : ◦ liste toutes les fonctions listées dans le référentiel ◦ parse le fichier src/functions.php et liste toutes les fonctions présentes ◦ échoue si une différence existe entre les deux listes • Même logique pour les attributs PHP 16
  16. Inside Castor - Loick Piera - Mai 2026 - Les

    exemples Toutes les fonctionnalités sont montrées en action. Un fichier d'exemple par fonctionnalité. 17
  17. Inside Castor - Loick Piera - Mai 2026 - Utilité

    des exemples • Démonstration plus concrète des fonctionnalités • Fichiers PHP autonomes et validés (CS, PHPStan) • Directement inclus dans les chapitres de la doc • Suite de test complète 18
  18. Inside Castor - Loick Piera - Mai 2026 - Les

    tests des exemples 19 • Script bin/generate-tests.php qui, pour chaque exemple : ◦ exécute l'exemple ◦ créé un fichier avec chaque output (stdout et stderr) ◦ crée un test PHPUnit qui exécute l'exemple • Tous ces fichiers sont versionnés • La CI lance ces tests et vérifie que l'output correspond
  19. Inside Castor - Loick Piera - Mai 2026 - Le

    tooling © ouest-france.fr
  20. Inside Castor - Loick Piera - Mai 2026 - L'installeur

    officiel • Script bash versionné dans le repository • Vérifie le système (OS, version de PHP, etc) • Installe, au choix, la version Phar ou la version binaire statique Inspiré de Symfony CLI, merci @tucksaun - #352 21
  21. Inside Castor - Loick Piera - Mai 2026 - La

    publication des releases • Assets initialement intégrés à la release via Github Action • Disponibles sur https://github.com/jolicode/castor/releases/latest • Problèmes le temps que les assets soient disponibles 23
  22. Inside Castor - Loick Piera - Mai 2026 - La

    publication des releases Maintenant, release manuelle avec le cli gh Attente que les assets soient disponibles avant de publier la release 24
  23. Inside Castor - Loick Piera - Mai 2026 - La

    CI • Lance les tests, mais vérifie également que : ◦ Les Codings Standards et analyse statique sont OK ◦ Le markdown de la doc est valide ◦ Le site de documentation peut être construit ◦ Tous les artefacts (phars, binaires) sont build et fonctionnels 25
  24. Inside Castor - Loick Piera - Mai 2026 - Parallel

    + output insert screen demo symfony/tui ? 26
  25. Inside Castor - Loick Piera - Mai 2026 - Castor

    est développé avec Castor Outils encapsulés dans des tasks Castor ◦ PHP-CS-Fixer ◦ PHPStan ◦ markdownlint ◦ ... 28
  26. Inside Castor - Loick Piera - Mai 2026 - La

    documentation Castor est construite avec Castor MkDocs : outil python installable via PIP Mise en place d'une image docker + task castor 29
  27. Inside Castor - Loick Piera - Mai 2026 - Les

    phar de Castor sont construits par Castor Box est encapsulé dans une task Castor. 30
  28. Inside Castor - Loick Piera - Mai 2026 - Castor

    est release avec Castor Le script de release avec GH est encapsulé dans une task Castor 31
  29. Inside Castor - Loick Piera - Mai 2026 - Merci

    pour votre attention 32 Des questions ? loickpiera.com @pyrech @pyrech @[email protected] @pyrech.bsky.social jolicode/castor