कई भाषाओं के साथ ट्रैविस सीआई कैसे स्थापित करें


98

मेरी परियोजना नोडज और जावा दोनों का उपयोग करती है

मैं एक नोड के साथ शुरू करने की कोशिश की निर्माण तो java स्थापित (क्योंकि यह एक npm मॉड्यूल है)

लेकिन जावा स्थापित करने के लिए स्क्रिप्ट विफल रही, साथ ही मुझे नहीं लगता कि जब जावा पहले से मौजूद है तो बिल्ड के साथ इसे स्थापित करने की आवश्यकता नहीं है।

मैं एक जावा निर्माण के साथ शुरू तो नोड स्थापित करना चाहिए?

मैं यह कोशिश कर रहा हूं

language: java
  - oraclejdk8
language: node_js
node_js:
  - "0.10"

जो पहली 2 लाइनों को नजरअंदाज कर देता है और एक नोड_जेएस बनाता है जिसमें जावा 7 है और मेरी परियोजना जावा 8 का उपयोग करती है

मैंने अजगर के लिए इस उत्तर की कोशिश की

का उपयोग करते हुए

language: node_js
node_js:
  - "0.10"
java: oraclejdk8

लेकिन वह काम नहीं किया

मैं java 8 कैसे जोड़ सकता हूँ?


जवाबों:


116

यह अब संभव हो रहा है कि matrix:includeफीचर का उपयोग करके एक .travis.yml फ़ाइल में कई भाषाओं को चलाने के लिए । एक उदाहरण के रूप में, मेरे गितुब रेपो को निम्नानुसार व्यवस्थित किया गया है:

project/ - top-level github directory
project/backend - Python backend
project/backend/tests - Python tests
project/android/AppName - Android app
project/ios/AppName - iOS app

यहाँ .travis.yml है, जो पायथन, जावा और ऑब्जेक्टिव-सी में परीक्षण चलाता है:

matrix:
  include:
    - language: python
      python: 2.7
      before_script:
        - cd backend/tests
      script:
        - python -m unittest discover

    - language: android
      dist: trusty
      jdk: oraclejdk8
      android:
        components:
          - tools
          - android-25
          - build-tools-25.0.3
      before_script:
        - cd android/AppName
      script:
        - ./gradlew build connectedCheck

    - language: objective-c
      os: osx
      osx_image: xcode8.3
      before_script:
        - cd ios/AppName
      script:
        - xcodebuild -workspace AppName.xcworkspace -scheme AppName
          -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.3' build test

notifications:
  email:
    - yourname@gmail.com

ऐसा लगता है कि आप मैट्रिक्स में प्रत्येक प्रविष्टि को एक शीर्ष स्तर के कॉन्फ़िगरेशन के रूप में मानकर इस सुविधा का उपयोग करते हुए कई अलग-अलग कॉन्फ़िगरेशन बना सकते हैं। बेशक, यदि आपके पास कोई पैरामीटर है जिसे आप सभी भाषाओं पर लागू करना चाहते हैं, तो आप शीर्ष स्तर पर ऐसा कर सकते हैं, जैसा कि मैं notifications:emailअनुभाग के साथ यहां करता हूं ।

जब यह सब सेट हो जाता है, तो प्रत्येक बिल्ड पर आपको कुछ ऐसा मिलता है। बूम।

यहां छवि विवरण दर्ज करें


2
यह आशाजनक लग रहा था, लेकिन यह ट्रैविस लिंट टूल को विफल करता है: lint.travis-ci.org
meisteg

4
मैं एक प्रकार का वृक्ष उपकरण से बात नहीं कर सकता, लेकिन मैं कह सकता हूं कि मैं कई महीनों से इस तरह के एक सेटअप का उपयोग कर रहा हूं, और इसने पूरी तरह से काम किया है।
कोडियाक

मैंने अजगर और नोडज के लिए इस सेटअप का उपयोग किया। python: 3.5संस्करण को सेट करने के लिए उपयोग करने के बजाय , मैंने python:\n - "3.5"ट्रैविस-सी के आधिकारिक पेज में अनुशंसित (इन दो अलग लाइनें हैं) का उपयोग किया। निर्माण विफल हो जाता है क्योंकि ट्रैविस python-["3.5"](नोटिस [और ") को पुनः प्राप्त करने की कोशिश करता है । क्या आप जानते हैं कि ऐसा क्यों हो सकता है? वन-लाइनर काम करता है।
क्रेजीफ्रॉग

3
यहाँ कुछ अजीब है: OP ने SAME BUILD में कई भाषाओं को सेट करने के बारे में पूछा, न कि कई भाषाओं को सेट करने के बारे में, प्रत्येक बिल्ड के लिए।
फजीअमी

2
@meisteg आधिकारिक ट्रेविस लिंट टूल का उपयोग करते समय इसे ठीक करता है। $ travis lint ~/Desktop/test.yml Hooray, /Users/nathanf/Desktop/test.yml looks valid :)
नाथन एफ

23

ट्रैविस जावा बिल्ड वातावरण पर, आप Node.js रनटाइम nvmको प्रबंधित करने के लिए उपयोग कर सकते हैं :

.travis.yml

language: java

jdk:
  - oraclejdk8

env:
  - NODE_VERSION="0.12"

before_install:
  - nvm install $NODE_VERSION

यदि आपका नोड संस्करण बहुत हाल का है, तो आपको अपडेट nvmभी करना पड़ सकता है ।

अपडेट करने के लिए nvm, इसे अपने में लिखें .travis.yml:

before_install:
  - wget https://raw.githubusercontent.com/creationix/nvm/v0.31.0/nvm.sh -O ~/.nvm/nvm.sh
  - source ~/.nvm/nvm.sh
  - nvm install 5 # for Node v5
  - node --version

उपरोक्त उदाहरण दिखाता है कि पहले कैसे अपडेट करें nvm v0.31, फिर प्राप्त करें Node v5


वह मेरा पसंदीदा समाधान है।
नटिम

13

मेरी परियोजना में पायथन / Django बैकएंड और JS / Vue का दृश्य नीचे जैसा है:

├── backend
│   ├── api
│   │   ├── tests                               
├── daemon                                                          
│   ├── frontend
│   │   ├── test

मैट्रिक्स टेस्ट में प्रत्येक टेस्ट सूट को चलाने का विचार है , एक पायथन / Django टेस्ट के लिए और दूसरा जेएस वालों के लिए:

matrix:
  include:
    - language: python
      python: 
        - 3.4
      before_install:
        - cd backend/
      install: 
        - pip install -r requirements.txt
      script:
        - python manage.py test

    - language: node_js
      node_js:
        - 4.8
      before_install:
        - cd daemon/frontend
      install:
        - yarn install
      script:
        - yarn test

notifications:
  email: false

यह सभी देखें



10

आप कई भाषाओं को नहीं जोड़ सकते हैं, जो आपके द्वारा देखे जा रहे व्यवहार की व्याख्या करता है, और node_jsसेटिंग को केवल नोड भाषा परियोजना में मान्यता दी जाएगी। आप जो कर सकते हैं, वह nvmट्रैविसी में शामिल उपयोग का है । उदाहरण के लिए, आप नोड के नवीनतम v0.10.x रिलीज को डाउनलोड करने के लिए - nvm install 0.10 - nvm use 0.10 अपने before_installअनुभाग में शामिल कर सकते हैं ।


2
लेकिन मैंने इसे विन्यास फाइल के साथ करने का प्रबंधन किया था जिसका मैंने स्वयं जवाब दिया था
अमृता द्रे

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