Bên trong .travis.yml
tập tin cấu hình phần chênh lệch thực tế giữa là gì before_install
, install
, before_script
và script
lự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.
Bên trong .travis.yml
tập tin cấu hình phần chênh lệch thực tế giữa là gì before_install
, install
, before_script
và script
lự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.
before_install
, install
và before_script
.
Câu trả lời:
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 .
docker build
lệnh được đưa vào before_install
từng bước. Nó không phải là trong install
bước?
docker build
nó đượ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_install
phần, nếu không có thể before_script
phầ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.
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_script
và script
tùy chọn
travis-ci
: xây dựng Git trongscript
giai đ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_script
giai đ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
script
giai đoạn ''; thực sự lệnh xây dựng mặc định của Travis CI choscript
giai đ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
script
pha '' 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_script
giai đ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_script
giai đ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 đè đó.