Jakie są różnice między {before} {install, script}.travis.opcje yml?

Wewnątrz pliku konfiguracyjnego .travis.yml Jaka jest praktyczna różnica między before_install, install, before_script i script opcje?

Nie znalazłem dokumentacji wyjaśniającej różnice między tymi opcjami.

 42
Author: Daniele Orlando, 2015-12-20

2 answers

Nie musisz używać tych sekcji, ale jeśli to zrobisz, poinformujesz o zamiarze tego, co robisz:

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

Zobacz na przykład https://github.com/localheinz/composer-normalize/blob/0.8.0/.travis.yml .

 34
Author: localheinz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-27 22:15:14

Różnica polega na stanie pracy, gdy coś pójdzie nie tak.

Git 2.17 (Q2 2018) ilustruje, że w commit 3c93b82 (08 Jan 2018) by SZEDER Gábor (szeder).
(dodany przez Junio C Hamano -- gitster -- in commit c710d18, 08 Mar 2018)

To ilustruje praktyczną różnicę między before_install, install, before_script i script opcje

travis-ci: build Git podczas fazy' script '

Odkąd zaczęliśmy budować i testować Git na Travis CI (522354d : Add Travis CI support, 2015-11-27, Git v2.7. 0-RC0), budujemy Git w Faza "before_script "i uruchom zestaw testów w fazie" script" (z wyjątkiem wprowadzonych później 32-bitowych zadań budowania Linuksa i Windows, gdzie budujemy w fazie " script").

Przeciwnie, praktyka Travis CI polega na budowaniu i testowaniu w 'script ' Faza; rzeczywiście domyślne polecenie build dla "script " Faza Projekty C / C++ to:

./configure && make && make test

Powód, dla którego Travis CI robi to w ten sposób i dlaczego jest lepszy podejście niż nasze polega na tym, jak nieudane są prace budowlane skategoryzowane. Po tym, jak coś poszło nie tak w pracy budowlanej, jego stan może be:

  • 'nie powiodło się" , jeśli polecenie w fazie "script " zwróciło błąd.
    Jest to oznaczone czerwonym "X"na interfejsie Travis CI web.

  • 'errored", jeśli komenda w 'before_install', 'install', lub Faza' before_script ' zwróciła błąd lub zadanie kompilacji zostało przekroczone termin.
    To jest pokazane jako czerwony'!"w interfejsie WWW.

To ułatwia, zarówno dla ludzi patrząc na Travis CI web interfejsu oraz dla zautomatyzowanych narzędzi zapytujących API Travis CI, do zdecyduj, kiedy za nieudaną budowę odpowiadamy ludzkiej uwagi, tzn. gdy zadanie budowania "nie powiodło się" z powodu kompilatora błąd lub błąd testu, a gdy jest spowodowane przez coś poza naszym kontroli i może być naprawiony przez ponowne uruchomienie zadania budowania, np. gdy zadanie build 'errored', ponieważ nie można zainstalować zależności z powodu tymczasowy błąd sieci lub ponieważ zadanie kompilacji OSX przekroczyło jego termin.

Wadą budowania Gita w fazie 'before_script ' jest to, że musi również sprawdzić dziennik śledzenia wszystkich "błędnych" zadań budowania, aby zobaczyć co spowodowało błąd, ponieważ mógł być on spowodowany przez kompilator błąd.
To wymaga dodatkowych kliknięć i ładowania strony w interfejsie WWW oraz dodatkowej złożoności i żądań API w zautomatyzowanych narzędziach.

Dlatego przenieś building Git z fazy 'before_script' do Faza " script", odpowiednio aktualizując nazwę skryptu.
'ci/run-builds.sh ' teraz staje się praktycznie pusty, usuń go.
Kilka naszych konfiguracji zadań budowania zastępuje nasze domyślne ' before_script', aby nic nie robić; z tą zmianą nasze domyślne 'before_script ' nie będzie działać cokolwiek, więc usuń te dyrektywy nadrzędne również.

 9
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-11 03:26:39