{पहले _,} {इंस्टॉल, स्क्रिप्ट} .travis.yml विकल्पों में क्या अंतर हैं?


81

अंदर .travis.ymlविन्यास फाइल के बीच व्यावहारिक अंतर क्या है before_install, install, before_scriptऔर scriptविकल्प?

मैंने इन विकल्पों के बीच के अंतर को स्पष्ट करते हुए कोई दस्तावेज नहीं पाया है।


तुमने यहाँ देखा? docs.travis-ci.com/user/customizing-the-build
nos

20
हाँ, और "errored" और "विफल" के बीच अंतर के अलावा, वहाँ क्या बीच का अंतर है के लिए कोई स्पष्टीकरण है 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

उदाहरण के लिए देखें, https://github.com/localheinz/composer-normalize/blob/0.8.0/.travis.yml


2
मुझे अभी भी समझ में नहीं आया है कि 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 को देखते हुए मैं समझता हूं कि निर्भरता स्थापित करने के लिए डॉकटर आवश्यक नहीं होना चाहिए।
लोकहिन्ज

23

अंतर काम की स्थिति में है जब कुछ गलत हो जाता है।

Git 2.17 (Q2 2018) दिखाता है कि में प्रतिबद्ध 3c93b82 से (08 जनवरी 2018) SZEDER Gábor ( szeder)
( जूनियो सी gitsterहमानो द्वारा विलय - - in c710d18 , 08 Mar 2018)

यही कारण है कि दोनों के बीच व्यावहारिक अंतर को दिखाता है before_install, install, before_scriptऔर scriptविकल्प

travis-ci: ' script' चरण के दौरान Git का निर्माण करें

जब से हमने ट्रैविस CI ( 522354d : ट्रैविस सीआई सपोर्ट, 2015-11-27, Git v2.7.0-rc0) पर Git का निर्माण और परीक्षण शुरू किया , हम ' before_script' चरण में Git का निर्माण करते हैं और टेस्ट सूट को ' script' में चलाते हैं। चरण (बाद में पेश किए गए 32 बिट लिनक्स और विंडोज को छोड़कर, जहां हम ' script' चरण '' में निर्माण करते हैं )।

इसके विपरीत, ट्रैविस सीआई अभ्यास ' script' चरण में निर्माण और परीक्षण करना है ; वास्तव में ट्रैविस CI की डिफ़ॉल्ट बिल्ड कमांड scriptC / C ++ प्रोजेक्ट्स के ' ' चरण के लिए है:

./configure && make && make test

ट्रैविस सीआई ने ऐसा क्यों किया और इसका कारण यह है कि हमारी तुलना में यह बेहतर दृष्टिकोण है कि असफल निर्माण नौकरियों को कैसे वर्गीकृत किया जाता है। बिल्ड जॉब में कुछ गलत होने के बाद, इसकी स्थिति यह हो सकती है:

  • '' विफल '' , यदि ' script' चरण में एक कमांड में कोई त्रुटि हुई।
    यह ट्रैविस CI वेब इंटरफेस पर एक लाल 'X' द्वारा दर्शाया गया है।

  • 'त्रुटिपूर्ण' , यदि ' before_install', ' install', या ' before_script' चरण में एक कमांड में कोई त्रुटि हुई या बिल्ड जॉब समय सीमा से अधिक हो गई।
    यह एक लाल के रूप में दिखाया गया है! ' वेब इंटरफेस पर।

ट्रैविस सीआई वेब इंटरफ़ेस को देखने वाले और स्वचालित उपकरण के लिए ट्रैविस सीआई एपीआई को उद्धृत करने वाले दोनों मनुष्यों के लिए यह आसान बनाता है, यह तय करने के लिए कि एक असफल निर्माण हमारी जिम्मेदारी है जो मानव ध्यान देने की आवश्यकता है, अर्थात जब एक संकलक के कारण एक निर्माण कार्य 'विफल' हुआ त्रुटि या एक परीक्षण की विफलता, और जब यह हमारे नियंत्रण से परे किसी चीज के कारण होता है और बिल्ड जॉब को पुनः आरंभ करके तय किया जा सकता है, जैसे कि एक बिल्ड जॉब 'त्रुटिपूर्ण' क्योंकि अस्थायी नेटवर्क त्रुटि के कारण निर्भरता स्थापित नहीं की जा सकती या क्योंकि OSX बिल्ड जॉब अपनी समय सीमा से अधिक हो गई।

' before_script' चरण में Git के निर्माण का दोष यह है कि सभी को 'त्रुटिपूर्ण' बिल्ड जॉब्स के ट्रेस लॉग की जांच करनी होती है, साथ ही यह देखने के लिए कि क्या त्रुटि हुई, क्योंकि यह एक कंपाइलर त्रुटि के कारण हुई होगी।
इसके लिए वेब इंटरफेस पर अतिरिक्त क्लिक और पेज लोड और स्वचालित टूल में अतिरिक्त जटिलता और एपीआई अनुरोध की आवश्यकता होती है।

इसलिए, स्क्रिप्ट के नाम को तदनुसार अपडेट करते हुए, Git को ' before_script' चरण से ' ' चरण में ले जाएं script
' ci/run-builds.sh' अब मूल रूप से खाली हो गया है, इसे हटा दें।
हमारे कई बिल्ड जॉब कॉन्फ़िगरेशन हमारे डिफ़ॉल्ट ' before_script' को कुछ नहीं करने के लिए ओवरराइड करते हैं; इस परिवर्तन के साथ हमारा डिफ़ॉल्ट ' before_script' कुछ भी नहीं करेगा, इसलिए, उन ओवरराइडिंग निर्देशों को भी हटा दें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.