Tak, poza różnicą między „błędnym” a „niepowodzeniem” nie ma wyjaśnienia, jaka jest różnica między before_install, installa before_script.
Daniele Orlando,
Odpowiedzi:
74
Nie musisz korzystać z tych sekcji, ale jeśli to zrobisz, przekazujesz zamiar 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
Nadal nie rozumiem, dlaczego w docs.travis-ci.com/user/docker The docker buildkomenda kładzie się na before_installkrok. Czy nie powinno to być installkrokiem?
Pahlevi Fikri Auliya
@PahleviFikriAuliya O ile rozumiem to w kontekście przykładu, docker buildsłuży do konfigurowania środowiska testowego - jeśli jest to potrzebne przed zainstalowaniem zależności, to ma sens przeniesienie tego do before_installsekcji, w przeciwnym razie może before_scriptsekcja będzie bardziej odpowiedni. Patrząc na docs.travis-ci.com/user/languages/ruby/#Bundler rozumiem, że docker nie powinien być potrzebny do instalowania zależności.
localheinz
23
Różnica polega na stanie pracy, gdy coś idzie nie tak.
Który ilustruje różnicę między praktyczną before_install, install, before_scriptoraz scriptopcji
travis-ci: buduj Gita w fazie „ 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), tworzymy Git w fazie „ before_script” i uruchamiamy zestaw testów w „ script” fazy (z wyjątkiem późniejszych wprowadzonych zadań kompilacji dla 32-bitowego systemu Linux i Windows, w których budujemy w script„fazie”).
W przeciwieństwie do tego praktyka Travis CI polega na budowaniu i testowaniu w fazie „ script”; rzeczywiście, domyślnym poleceniem kompilacji Travis CI dla scriptfazy projektów C / C ++ jest:
./configure && make && make test
Powód, dla którego Travis CI robi to w ten sposób i dlaczego jest to lepsze podejście niż nasze, leży w kategoryzowaniu nieudanych prac budowlanych. Gdy coś poszło nie tak w budowaniu, jego stan może wyglądać następująco:
„nie powiodło się” , jeśli polecenie w fazie „ script” zwróciło błąd.
Wskazuje na to czerwony „X” w interfejsie internetowym Travis CI.
„błąd” , jeśli polecenie w fazie „ before_install”, „ install” lub „ before_script” zwróciło błąd lub zadanie kompilacji przekroczyło limit czasu.
Jest to pokazane jako czerwony „!” w interfejsie internetowym.
Ułatwia to zarówno ludziom przeglądającym interfejs sieciowy Travis CI, jak i zautomatyzowanym narzędziom wysyłającym zapytania do interfejsu API Travis CI, podjęcie decyzji, kiedy nieudana kompilacja jest naszym obowiązkiem wymagającym ludzkiej uwagi, tj. Kiedy zadanie kompilacji „nie powiodło się” z powodu kompilatora. błąd lub niepowodzenie testu, a gdy jest to spowodowane przez coś poza naszą kontrolą i może zostać naprawione przez ponowne uruchomienie zadania kompilacji, np. gdy zadanie kompilacji zostało „błędne”, ponieważ nie można było zainstalować zależności z powodu tymczasowego błędu sieci lub Zadanie kompilacji OSX przekroczyło limit czasu.
Wadą budowania Gita w fazie „ before_script” jest to, że trzeba sprawdzić dziennik śledzenia wszystkich „błędnych” zadań budowania, aby zobaczyć, co spowodowało błąd, ponieważ mógł być on spowodowany błędem kompilatora.
Wymaga to dodatkowych kliknięć i wczytywania stron w interfejsie internetowym oraz dodatkowej złożoności i żądań API w zautomatyzowanych narzędziach.
Dlatego przenieś budowanie Gita z fazy „ before_script” do fazy „ script”, odpowiednio aktualizując również nazwę skryptu.
' ci/run-builds.sh' teraz jest w zasadzie pusty, usuń go.
Kilka z naszych konfiguracji zadań kompilacji zastępuje domyślne ustawienie „ before_script”, aby nic nie robić; z tą zmianą nasze domyślne ' before_script' też nic nie zrobi, więc usuń również te nadrzędne dyrektywy.
before_install
,install
abefore_script
.Odpowiedzi:
Nie musisz korzystać z tych sekcji, ale jeśli to zrobisz, przekazujesz zamiar tego, co robisz:
Zobacz na przykład https://github.com/localheinz/composer-normalize/blob/0.8.0/.travis.yml .
źródło
docker build
komenda kładzie się nabefore_install
krok. Czy nie powinno to byćinstall
krokiem?docker build
służy do konfigurowania środowiska testowego - jeśli jest to potrzebne przed zainstalowaniem zależności, to ma sens przeniesienie tego dobefore_install
sekcji, w przeciwnym razie możebefore_script
sekcja będzie bardziej odpowiedni. Patrząc na docs.travis-ci.com/user/languages/ruby/#Bundler rozumiem, że docker nie powinien być potrzebny do instalowania zależności.Różnica polega na stanie pracy, gdy coś idzie nie tak.
Git 2.17 (Q2 2018) ilustruje to w zatwierdzeniu 3c93b82 (08 stycznia 2018) autorstwa SZEDER Gábor (
szeder
) .(Scalone przez Junio C Hamano -
gitster
- w zatwierdzeniu c710d18 , 08 marca 2018 r.)Który ilustruje różnicę między praktyczną
before_install
,install
,before_script
orazscript
opcjiźródło