Да, и кроме разницы между «с ошибкой» и «сбой», нет объяснения, в чем разница между before_install, installи before_script.
Даниэле Орландо
Ответы:
74
Вам не обязательно использовать эти разделы, но если вы это сделаете, вы сообщаете о намерении того, что делаете:
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
Я до сих пор не понимаю , почему в docs.travis-ci.com/user/docker , то docker buildкоманда помещается на before_installшаг. Разве это не должно быть в installногу?
Пахлеви Фикри Аулия
@PahleviFikriAuliya Насколько я понимаю в контексте примера, docker buildиспользуется для настройки тестовой среды - если это необходимо до установки зависимостей, имеет смысл переместить это в before_installраздел, иначе, возможно, before_scriptраздел будет быть более подходящим. Глядя на docs.travis-ci.com/user/languages/ruby/#Bundler, я понимаю, что докер не нужен для установки зависимостей.
localheinz
23
Разница заключается в состоянии работы, когда что-то идет не так.
Это иллюстрирует практическое различие между before_install, install, before_scriptи scriptвариантами
travis-ci: построить Git на scriptэтапе ' '
С тех пор, как мы начали сборку и тестирование Git на Travis CI ( 522354d : добавление поддержки Travis CI, 2015-11-27, Git v2.7.0-rc0), мы создаем Git на этапе ' before_script' и запускаем набор тестов в ' script' фаза (за исключением представленных позже 32-битных заданий сборки Linux и Windows, где мы строим на script«фазе»).
Напротив, практика Travis CI состоит в том, чтобы создавать и тестировать на этапе " script"; действительно, команда сборки Travis CI по умолчанию для scriptфазы проектов C / C ++:
./configure && make && make test
Причина, по которой Travis CI делает это таким образом и почему этот подход лучше, чем наш, заключается в том, как классифицируются неудачные задачи сборки. После того, как что-то пошло не так при сборке, его состояние может быть:
'не удалось' , если команда в scriptфазе ' ' вернула ошибку.
На это указывает красный значок «X» в веб-интерфейсе Travis CI.
'errored' , если команда на фазе ' before_install', ' install' или ' before_script' вернула ошибку или задание сборки превысило лимит времени.
Это отображается красным "!" в веб-интерфейсе.
Это упрощает как людям, просматривающим веб-интерфейс Travis CI, так и автоматизированным инструментам, запрашивающим Travis CI API, решение, когда неудачная сборка является нашей обязанностью, требующей внимания человека, то есть когда задание сборки «не удалось» из-за компилятора. ошибка или сбой теста, и когда это вызвано чем-то вне нашего контроля и может быть исправлено путем перезапуска задания сборки, например, когда задание сборки содержит ошибку, потому что зависимость не может быть установлена из-за временной сетевой ошибки или из-за того, что Задание сборки OSX превысило отведенное время.
Недостатком сборки Git на этапе " before_script" является то, что нужно также проверять журнал трассировки всех заданий сборки с ошибками, чтобы узнать, что вызвало ошибку, поскольку она могла быть вызвана ошибкой компилятора.
Это требует дополнительных кликов и загрузок страниц в веб-интерфейсе, а также дополнительной сложности и запросов API в автоматизированных инструментах.
Поэтому переместите сборку Git из before_scriptфазы ' ' в фазу ' script', также обновив имя скрипта соответствующим образом.
' ci/run-builds.sh' теперь становится практически пустым, удалите его.
Некоторые из наших конфигураций заданий сборки отменяют наше значение по умолчанию: before_script«ничего не делать; с этим изменением наше значение по умолчанию before_scriptтоже ничего не сделает, так что удалите и эти переопределяющие директивы.
before_install
,install
иbefore_script
.Ответы:
Вам не обязательно использовать эти разделы, но если вы это сделаете, вы сообщаете о намерении того, что делаете:
См., Например, https://github.com/localheinz/composer-normalize/blob/0.8.0/.travis.yml .
источник
docker build
команда помещается наbefore_install
шаг. Разве это не должно быть вinstall
ногу?docker build
используется для настройки тестовой среды - если это необходимо до установки зависимостей, имеет смысл переместить это вbefore_install
раздел, иначе, возможно,before_script
раздел будет быть более подходящим. Глядя на docs.travis-ci.com/user/languages/ruby/#Bundler, я понимаю, что докер не нужен для установки зависимостей.Разница заключается в состоянии работы, когда что-то идет не так.
Git 2.17 (2 квартал 2018 г.) иллюстрирует это в коммите 3c93b82 (8 января 2018 г.), выполненном SZEDER Gábor (
szeder
) .(Объединено Junio C Hamano -
gitster
- в коммите c710d18 , 8 марта 2018 г.)Это иллюстрирует практическое различие между
before_install
,install
,before_script
иscript
вариантамиисточник