web-dev-qa-db-fra.com

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

À l'intérieur de .travis.yml fichier de configuration quelle est la différence pratique entre before_install, install, before_script et script options?

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

69
Daniele Orlando

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/doctrine-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 .

64
localheinz

La différence réside dans l'état du travail en cas de problème.

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

Cela illustre la différence pratique entre les options before_install, install, before_script Et script

travis-ci: Compilez Git pendant la phase 'script'

Depuis que nous avons commencé à créer et à tester Git sur Travis CI ( 522354d : Ajouter la prise en charge de Travis CI, 2015-11-27, Git v2.7.0-rc0), nous construisons Git dans le 'before_script 'et exécutez la suite de tests dans la phase' script '(sauf dans les travaux de construction Linux et Windows 32 bits introduits plus tard, où nous construisons dans la phase' script ') .

Au contraire, la pratique de Travis CI consiste à construire et tester dans la phase 'script'; en effet, la commande de construction par défaut de Travis CI pour la phase 'script' des projets C/C++ est:

./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 s'est mal passé dans un travail de build, son état peut être:

  • 'a échoué' , si une commande dans la phase 'script' a renvoyé une erreur.
    Ceci est indiqué par un "X" rouge sur l'interface Web de Travis CI.

  • 'errored' , if a command in the 'before_install', 'install', or 'before_script A renvoyé une erreur ou le travail de génération a dépassé la limite de temps.
    Ceci est indiqué par un '!' Rouge sur l'interface Web.

Cela facilite, à la fois pour les humains qui consultent l'interface Web de Travis CI et pour les outils automatisés interrogeant l'API Travis CI, de décider quand une génération infructueuse est de notre responsabilité nécessitant une attention humaine, c'est-à-dire quand un travail de construction a échoué à cause d'un compilateur. une 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 génération est "erroné" car une dépendance n'a pas pu être installée en raison d'une erreur réseau temporaire ou parce que le travail de génération 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 également vérifier le journal de trace de tous les travaux de construction 'erronés' pour voir ce qui a causé l'erreur, car elle pourrait avoir été causée par un erreur du compilateur.
Cela nécessite des clics et des chargements de page supplémentaires sur l'interface Web et une complexité et des demandes d'API supplémentaires dans les outils automatisés.

Par conséquent, déplacez la construction de Git de la phase 'before_script' Vers la phase 'script', en mettant également à jour le nom du script en conséquence.
'ci/run-builds.sh' Devient maintenant pratiquement vide, supprimez-le.
Plusieurs de nos configurations de travaux de construction remplacent notre valeur par défaut "before_script" Pour ne rien faire; avec cette modification, notre "before_script" par défaut ne fera rien non plus, donc supprimez également ces directives primordiales.

18
VonC

Le cycle de vie de la construction

Un build sur Travis CI se compose de deux étapes:

install: installez toutes les dépendances requises script: exécutez le script de construction Vous pouvez exécuter des commandes personnalisées avant l'étape d'installation (before_install), et avant (before_script) ou après (after_script) l'action de script.

Dans un before_install étape, vous pouvez installer des dépendances supplémentaires requises par votre projet telles que des packages Ubuntu ou des services personnalisés.

En savoir plus ici

0
yoAlex5