web-dev-qa-db-ja.com

{before _、} {install、script} .travis.ymlオプションの違いは何ですか?

.travis.yml構成ファイルbefore_installinstallbefore_scriptおよびscriptオプション?

これらのオプションの違いを説明するドキュメントは見つかりませんでした。

69
Daniele Orlando

これらのセクションを使用する必要はありませんが、使用する場合は、実行していることの意図を伝えます。

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 を参照してください。

64
localheinz

違いは、何かがうまくいかないときのジョブの状態です。

Git 2.17(2018年第2四半期)は、 commit 3c93b82 (2018年1月8日)で SZEDERGábor(szeder であることを示しています。
ジュニオC浜野-gitster- in commit c710d18 、2018年3月8日)

これは、before_installinstallbefore_scriptおよびscriptオプションの実際の違いを示しています

travis-ci: 'script'フェーズでGitをビルドします

Travis CIでGitの構築とテストを開始してから( 522354d :Travis CIサポートを追加、2015-11-27、Git v2.7.0-rc0)、「before_script」フェーズでGitを構築し、 'script'フェーズでテストスイートを実行します(後で導入された 'script'フェーズでビルドする32ビットLinuxおよびWindowsビルドジョブを除く)。

反対に、Travis CIのプラクティスは、「script」フェーズでビルドおよびテストすることです。実際、C/C++プロジェクトの 'script'フェーズ用のTravis CIのデフォルトのビルドコマンドは次のとおりです。

./configure && make && make test

Travis CIがこのように処理する理由と、それが私たちよりも優れたアプローチである理由は、失敗したビルドジョブがどのように分類されるかにあります。ビルドジョブで問題が発生した後、その状態は次のようになります。

  • 'failed'、 'script'フェーズのコマンドがエラーを返した場合。
    これは、Travis CI Webインターフェースの赤い「X」で示されます。

  • 'errored'、 'before_install'、 'install'、または 'before_script'フェーズのコマンドがエラーを返した場合、またはビルドジョブが制限時間を超えました。
    これは赤色の「!」として表示されますWebインターフェイス上。

これにより、Travis CI Webインターフェースを見る人間とTravis CI APIを照会する自動化ツールの両方が、失敗したビルドが人間の注意を必要とする責任であるかどうか、つまり、ビルドジョブがコンパイラーのために「失敗」したかどうかを判断しやすくなりますエラーまたはテストの失敗、および制御不能な何かが原因であり、ビルドジョブを再起動することで修正できる場合一時的なネットワークエラーのために依存関係をインストールできなかったため、またはOSXビルドジョブが制限時間を超えたために、ビルドジョブが「エラー」になったとき。

before_script」フェーズでGitをビルドすることの欠点は、すべての「エラー」ビルドジョブのトレースログも確認する必要があることです。コンパイラエラーが原因である可能性があるため、エラーの原因を確認する必要があります。
これには、Webインターフェースでの追加のクリックとページのロード、および自動化ツールでの追加の複雑さとAPIリクエストが必要です。

したがって、ビルドGitを「before_script」フェーズから「script」フェーズに移動し、それに応じてスクリプトの名前も更新します。
'ci/run-builds.sh'は基本的に空になり、削除します。
いくつかのビルドジョブ構成は、デフォルトの 'before_script'をオーバーライドして何もしません。この変更により、デフォルトの「before_script」でも何も実行されないため、これらのオーバーライドディレクティブも削除します。

18
VonC

ビルドライフサイクル

Travis CIのビルドは、2つのステップで構成されています。

install:必要な依存関係をインストールしますscript:ビルドスクリプトを実行しますインストール手順の前にカスタムコマンドを実行できます(before_install)、およびその前(before_script)または後(after_script)スクリプトステップ。

before_installステップでは、Ubuntuパッケージやカスタムサービスなど、プロジェクトに必要な追加の依存関係をインストールできます。

続きを読む こちら

0
yoAlex5