$30 off During Our Annual Pro Sale. View Details »

Make is an actual task runner

Make is an actual task runner

Julien BIANCHI

October 27, 2016
Tweet

More Decks by Julien BIANCHI

Other Decks in Programming

Transcript

  1. View Slide

  2. Make
    is an actual task runner

    View Slide

  3. @JUBIANCHI
    [email protected]
    [email protected]
    MAKE WHO-AM-I

    View Slide

  4. LES MÊMES
    tâches toute la journée, tous les jours
    les développeurs exécutent

    View Slide

  5. AUTOMATISER ?
    pourquoi ne pas tout

    View Slide

  6. TASK RUNNER
    — quelqu’un, un jour
    et si on écrivait un

    View Slide

  7. TASK RUNNER
    — quelqu’un d’autre, un autre jour
    et si on écrivait un

    View Slide

  8. PHING

    View Slide

  9. ROBO

    View Slide

  10. BLDR

    View Slide

  11. GRUMPHP

    View Slide


  12. View Slide

  13. LE PROBLÈME

    View Slide

  14. L’AUTRE PROBLÈME

    View Slide

  15. MONOREPO
    un dépôt, plusieurs technos
    PLUSIEURS TASK RUNNERS ?
    UN SEUL ? LEQUEL ?

    View Slide

  16. View Slide

  17. LES MÊMES
    qu’hier… et avant…
    nos problèmes aujourd’hui sont

    View Slide

  18. (since 1977)
    Make

    View Slide

  19. SIMPLE
    make est

    View Slide

  20. CONFIGURABLE
    make est

    View Slide

  21. INTELLIGENT
    make est

    View Slide

  22. PORTABLE
    make est

    View Slide

  23. INDÉPENDANT
    make est

    View Slide

  24. $ make
    make: *** No targets specified
    and no makefile found. Stop.
    SIMPLE

    View Slide

  25. cible …: [prérequis …]
    [recette]
    […]
    LES RÈGLES

    View Slide

  26. VARIABLE = [valeur]
    LES VARIABLES

    View Slide

  27. vendor: composer.lock
    composer install
    composer.lock: composer.json
    composer update
    CONFIGURABLE

    View Slide

  28. $ make
    composer install

    SIMPLE

    View Slide

  29. $ make
    make: `vendor' is up
    to date.
    INTELLIGENT

    View Slide

  30. vendor: composer.lock
    composer install
    composer.lock: composer.json
    composer update
    node_modules: package.json
    npm install
    INDÉPENDANT

    View Slide

  31. me-started: vendor node_modules
    .PHONY: me-started
    vendor: composer.lock
    composer install
    composer.lock: composer.json
    composer update
    node_modules: package.json
    npm install
    CONFIGURABLE

    View Slide

  32. $ make me-started
    composer install

    npm install

    SIMPLE

    View Slide

  33. $ make -j2 me-started
    composer install
    npm install


    SIMPLE & EFFICACE

    View Slide

  34. MIAATR_ENV ?= dev
    COMPOSER_ARGS =
    ifeq ($(MIAATR_ENV),prod)
    COMPOSER_ARGS=—prefer-dist —classmap-
    authoritative
    endif
    vendor: composer.lock
    composer install $(COMPOSER_ARGS)
    CONFIGURABLE

    View Slide

  35. $ make
    composer install
    $ make MIAATR_ENV=prod
    composer install —prefer-dist —
    classmap-authoritative
    $ export MIAATR_ENV=prod
    $ make
    composer install —prefer-dist
    SIMPLE

    View Slide

  36. logs/xunit.xml: src/*.php
    tests/*.php
    vendor/bin/atoum
    EXEMPLES
    lancer ses tests unitaires

    View Slide

  37. logs/cs.log: src/*.php
    vendor/bin/php-cs-fixer |
    tee logs/cs.log
    EXEMPLES
    vérifier/corriger les CS

    View Slide

  38. logs/cs.log: src/*.php
    vendor/bin/php-cs-fixer fix
    | tee $@
    EXEMPLES
    vérifier/corriger les CS

    View Slide

  39. logs/phpmetrics.html: src/*.php
    vendor/bin/phpmetrics —report-
    html=$@ src/
    EXEMPLES
    qualité

    View Slide

  40. test: logs/xunit.xml logs/cs.log logs/
    phpmetrics.html
    .PHONY: test
    EXEMPLES
    one target to rule them all

    View Slide

  41. VIEUX
    mais c’est
    make c’est
    BIEN

    View Slide

  42. SIMPLE
    LES RÈGLES
    LES RECETTES (commandes)
    LES VARIABLES
    CLI

    View Slide

  43. CONFIGURABLE
    MAKEFILE
    ENVIRONNEMENT
    CLI

    View Slide

  44. INTELLIGENT
    PORTABLE
    INDÉPENDANT

    View Slide

  45. (since 1977)
    Make

    View Slide

  46. View Slide

  47. REAL WORLD

    View Slide

  48. REAL WORLD

    View Slide

  49. REAL WORLD

    View Slide

  50. REAL WORLD

    View Slide

  51. REAL WORLD

    View Slide

  52. Merci
    Questions ?
    https://joind.in/talk/5f30d

    View Slide

  53. http://lyon.afup.org/cfp/
    WE CAN HELP YOU!

    View Slide

  54. http://afup.org/event/phptournantes2017

    View Slide