{before _,} {install,script} .travis.yml选项之间有什么区别?


80

内部.travis.yml配置文件之间有什么实际差别before_installinstallbefore_scriptscript选择?

我没有找到说明这些选项之间差异的文档。



19
是的,除了与“误”和“失败”的区别,对于之间有什么区别没有解释before_installinstallbefore_script
Daniele Orlando

Answers:


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

参见例如https://github.com/localheinz/composer-normalize/blob/0.8.0/.travis.yml


2
我仍然不明白为什么在docs.travis-ci.com/user/docker中执行docker build命令before_install。不应该步调一致install吗?
Pahlevi Fikri Auliya

据我在示例上下文中了解的那样,@PahleviFikriAuliyadocker build用于设置测试环境-如果在可以安装依赖项之前需要此环境,则将其移至该before_install部分是有意义的,否则该before_script部分可能会更合适。通过查看docs.travis-ci.com/user/languages/ruby/#Bundler,我了解到安装依赖项不需要docker
localheinz

23

不同之处在于出现问题时的工作状态。

Git的2.17(Q2 2018)说明在提交3c93b82(2018年1月8日),由SZEDER的Gabor( )szeder
(通过合并JUNIOÇ滨野- gitster-提交c710d18,2018年3月8日)

这说明之间的实际差别before_installinstallbefore_scriptscript选项

travis-ci:在' script'阶段构建Git

自从我们开始建设和特拉维斯CI测试的Git(522354d:添加特拉维斯CI的支持,2015年11月27日,Git的V2.7.0-RC0),我们在“构建混帐before_script”阶段和运行测试套件中的“ script”阶段(在以后介绍的32位Linux和Windows构建作业中,我们在“ script'阶段”进行构建)。

相反,Travis CI的实践是在' script'阶段进行构建和测试。实际上,Travis CIscript在C / C ++项目的' '阶段的默认构建命令是:

./configure && make && make test

Travis CI这样做的原因以及它比我们的方法更好的原因在于如何将不成功的构建作业归类。在构建作业中出现问题之后,其状态可以是:

  • 如果' script'阶段中的命令返回错误,则为'failed'
    Travis CI Web界面上的红色“ X”表示。

  • 如果在“ before_install”,“ install”或“ before_script”阶段中的命令返回错误,或者构建作业超出了时间限制,则为“错误”
    显示为红色的“!” 在网络界面上。

这对于查看Travis CI Web界面的人员和查询Travis CI API的自动化工具而言,更容易确定何时不成功的构建是我们的责任,需要人类关注,即,何时构建工作由于编译器而“失败”错误或测试失败,并且是由于我们无法控制的原因而导致的错误或测试失败,并且可能由于重新启动构建作业而得以修复,例如,由于临时网络错误而无法安装依赖项,或者由于OSX构建作业超过了其时间限制。

在' before_script'阶段构建Git的缺点是,还必须检查所有“错误的”构建作业的跟踪日志,以查看导致错误的原因,因为它可能是由编译器错误引起的。
这需要在Web界面上进行额外的点击和页面加载,并需要自动化工具中的额外复杂性和API请求。

因此,将构建Git从“ before_script”阶段移到“ script”阶段,并相应地更新脚本的名称。
' ci/run-builds.sh'现在基本上变成空了,将其删除。
我们的几个构建作业配置覆盖了默认的' before_script',什么也不做;进行此更改后,我们的默认默认设置' before_script'也不会执行任何操作,因此也请删除这些替代指令。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.