Quelles sont les différences entre les options {before _,} {install, script} .travis.yml?

Dans le fichier de configuration .travis.yml , quelle est la différence entre les before_install , install , before_script et script ?

Je n’ai trouvé aucune documentation expliquant les différences entre ces options.

Vous n’avez pas besoin d’utiliser ces sections, mais si vous le faites, vous communiquez l’intention de ce que vous faites:

 before_install: # execute all of the commands which need to be executed # before installing dependencies - composer self-update - composer validate install: # install all of the dependencies you need here - composer install --prefer-dist before_script: # execute all of the commands which need to be executed # before running actual tests - mysql -u root -e 'CREATE DATABASE test' - bin/docsortingne-migrations migrations:migrate script: # execute all of the commands which should make the build pass or fail - vendor/bin/phpunit - vendor/bin/php-cs-fixer fix --verbose --diff --dry-run 

Voir, par exemple, https://github.com/localheinz/composer-normalize/blob/0.8.0/.travis.yml .

La différence est dans l’état du travail quand quelque chose ne va pas.

Git 2.17 (Q2 2018) illustre cela dans commit 3c93b82 (08 janv. 2018) par SZEDER Gábor ( szeder ) .
(Fusionné par Junio ​​C Hamano – gitster – dans commit c710d18 , 08 mars 2018)

Cela illustre la différence entre les before_install , install , before_script et script

travis-ci : construire Git pendant la phase ‘ script

Depuis que nous avons commencé à construire et à tester Git sur Travis CI ( 522354d : Ajout du support CI Travis, 27/11/2015, Git v2.7.0-rc0), nous construisons Git dans la phase ” before_script ” et before_script la suite de tests dans phase du script (sauf dans les versions ultérieures de Linux et de Windows, où nous construisons la phase de script ).

Au contraire, la pratique de Travis CI consiste à construire et à tester dans la phase « script »; En effet, la commande par défaut de Travis CI pour la phase ‘ script ‘ des projets C / C ++ est la suivante:

 ./configure && make && make test 

La raison pour laquelle Travis CI le fait de cette façon et pourquoi c’est une meilleure approche que la nôtre réside dans la catégorisation des travaux de construction infructueux. Après que quelque chose a mal tourné dans un travail de construction, son état peut être:

  • ‘failed’ , si une commande dans la phase ‘ script ‘ a renvoyé une erreur.
    Ceci est indiqué par un «X» rouge sur l’interface Web Travis CI.

  • ‘errored’ , si une commande dans la before_installbefore_install ‘, ‘ install ‘ ou ‘ before_script ‘ a renvoyé une erreur ou si le travail de génération a dépassé la limite de temps.
    Ceci est montré comme un rouge ‘!’ sur l’interface web.

Cela rend plus facile, à la fois pour les utilisateurs de l’interface Web Travis CI et pour les outils automatisés interrogeant l’API Travis CI, de décider à quel moment une génération infructueuse requirejs notre attention, par exemple lorsqu’un travail de génération a échoué à cause d’un compilateur. erreur ou un échec de test, et quand il est causé par quelque chose hors de notre contrôle et peut être corrigé en redémarrant le travail de construction, par exemple lorsqu’un travail de construction “erroné” parce qu’une dépendance n’a pas pu être installée Le travail de construction OSX a dépassé sa limite de temps.

L’inconvénient de la construction de Git dans la phase ” before_script ” est qu’il faut aussi vérifier le journal de trace de toutes les tâches de construction ” before_script ” pour voir ce qui a causé l’erreur, car cela peut être dû à une erreur de compilation.
Cela nécessite des clics et des chargements de pages supplémentaires sur l’interface Web, ainsi qu’une complexité et des demandes d’API supplémentaires dans les outils automatisés.

Par conséquent, déplacez le bâtiment Git de la phase ” before_script ” vers la phase ” script “, en mettant également à jour le nom du script.
ci/run-builds.sh ‘ devient maintenant fondamentalement vide, supprimez-le.
Plusieurs de nos configurations de travaux de construction remplacent notre before_script par défaut ‘ before_script ‘ pour ne rien faire; avec ce changement, notre « before_script » par défaut ne fera rien non plus, alors supprimez également ces directives.