Sự khác biệt giữa các tùy chọn {before _,} {install, script} .travis.yml là gì?


81

Bên trong .travis.ymltập tin cấu hình phần chênh lệch thực tế giữa là gì before_install, install, before_scriptscriptlựa chọn?

Tôi không tìm thấy tài liệu nào giải thích sự khác biệt giữa các tùy chọn này.



20
Vâng, và ngoại trừ sự khác biệt giữa "errored" và "thất bại", không có lời giải thích cho sự khác biệt giữa là gì before_install, installbefore_script.
Daniele Orlando

Câu trả lời:


74

Bạn không cần phải sử dụng những phần này, nhưng nếu có, bạn sẽ truyền đạt mục đích của những gì bạn đang làm:

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

Ví dụ: xem https://github.com/localheinz/composer-normalize/blob/0.8.0/.travis.yml .


2
Tôi vẫn không hiểu tại sao trong docs.travis-ci.com/user/docker , docker buildlệnh được đưa vào before_installtừng bước. Nó không phải là trong installbước?
Pahlevi Fikri Auliya

@PahleviFikriAuliya Theo như tôi hiểu trong ngữ cảnh của ví dụ, docker buildnó được sử dụng để thiết lập môi trường thử nghiệm - nếu điều đó là cần thiết trước khi có thể cài đặt các phần phụ thuộc, thì bạn nên chuyển phần này sang before_installphần, nếu không có thể before_scriptphần đó sẽ thích hợp hơn. Nhìn vào docs.travis-ci.com/user/languages/ruby/#Bundler Tôi hiểu rằng docker không cần thiết để cài đặt các phụ thuộc.
localheinz 14/09/17

23

Sự khác biệt là ở trạng thái của công việc khi có sự cố.

Git 2.17 (Quý 2 năm 2018) minh họa điều đó trong cam kết 3c93b82 (08 tháng 1 năm 2018) bởi SZEDER Gábor ( szeder) .
(Hợp nhất bởi Junio ​​C Hamano - gitster- trong cam kết c710d18 , ngày 08 tháng 3 năm 2018)

Minh họa sự khác biệt thực tiễn giữa before_install, install, before_scriptscripttùy chọn

travis-ci: xây dựng Git trong scriptgiai đoạn ''

Kể từ khi chúng tôi bắt đầu xây dựng và thử nghiệm Git trên Travis CI ( 522354d : Thêm hỗ trợ Travis CI, 2015-11-27, Git v2.7.0-rc0), chúng tôi xây dựng Git trong before_scriptgiai đoạn '' và chạy bộ thử nghiệm trong ' script' giai đoạn (ngoại trừ trong các công việc xây dựng Linux và Windows 32 bit được giới thiệu sau này, nơi chúng tôi xây dựng trong ' script' giai đoạn ').

Ngược lại, thực tiễn của Travis CI là xây dựng và thử nghiệm trong scriptgiai đoạn ''; thực sự lệnh xây dựng mặc định của Travis CI cho scriptgiai đoạn '' của các dự án C / C ++ là:

./configure && make && make test

Lý do tại sao Travis CI làm theo cách này và tại sao đó là một cách tiếp cận tốt hơn của chúng tôi nằm ở cách phân loại các công việc xây dựng không thành công. Sau khi xảy ra sự cố trong công việc xây dựng, trạng thái của nó có thể là:

  • 'fail' , nếu một lệnh trong scriptpha '' trả về lỗi.
    Điều này được biểu thị bằng dấu 'X' màu đỏ trên giao diện web Travis CI.

  • 'bị lỗi' , nếu lệnh trong pha ' before_install', ' install' hoặc ' before_script' trả về lỗi hoặc công việc xây dựng vượt quá giới hạn thời gian.
    Điều này được hiển thị dưới dạng màu đỏ '!' trên giao diện web.

Điều này giúp con người nhìn vào giao diện web Travis CI và các công cụ tự động truy vấn API Travis CI dễ dàng hơn, để quyết định khi nào một bản dựng không thành công là trách nhiệm của chúng tôi đòi hỏi sự chú ý của con người, tức là khi công việc xây dựng 'thất bại' do trình biên dịch lỗi hoặc lỗi kiểm tra và khi nó gây ra bởi một cái gì đó ngoài tầm kiểm soát của chúng tôi và có thể được khắc phục bằng cách khởi động lại công việc xây dựng, ví dụ: khi công việc xây dựng 'bị lỗi' vì không thể cài đặt phụ thuộc do lỗi mạng tạm thời hoặc do Công việc xây dựng OSX đã vượt quá giới hạn thời gian của nó.

Hạn chế của việc xây dựng Git trong before_scriptgiai đoạn '' là người ta cũng phải kiểm tra nhật ký theo dõi của tất cả các công việc xây dựng 'bị lỗi' để xem điều gì gây ra lỗi, vì nó có thể là do lỗi trình biên dịch gây ra.
Điều này yêu cầu các nhấp chuột và tải trang bổ sung trên giao diện web và độ phức tạp bổ sung và yêu cầu API trong các công cụ tự động.

Do đó, hãy chuyển việc xây dựng Git từ before_scriptgiai đoạn '' sang giai đoạn ' script', đồng thời cập nhật tên của tập lệnh cho phù hợp.
' ci/run-builds.sh' Bây giờ trở nên cơ bản rỗng, loại bỏ nó.
Một số cấu hình công việc xây dựng của chúng tôi ghi đè mặc định của chúng tôi ' before_script' để không làm gì cả; với thay đổi này mặc định của chúng tôi ' before_script' cũng sẽ không làm gì cả, vì vậy hãy xóa các chỉ thị ghi đè đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.