วิธีตั้งค่า Travis CI ด้วยหลายภาษา


99

โครงการของฉันใช้ทั้ง nodejs และ java

ฉันลองเริ่มต้นด้วยการสร้าง node_js จากนั้นติดตั้ง java (เนื่องจากนี่เป็นโมดูล npm)

แต่สคริปต์ในการติดตั้ง java ล้มเหลวและฉันไม่คิดว่าจำเป็นต้องติดตั้งเมื่อมี build ที่มี java ที่มีอยู่แล้ว

ฉันควรเริ่มต้นด้วยการสร้าง java จากนั้นติดตั้งโหนดหรือไม่

ฉันกำลังลองสิ่งนี้

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

ซึ่งมองข้าม 2 บรรทัดแรกและสร้าง node_js build ซึ่งมี java 7 และโปรเจ็กต์ของฉันใช้ java 8

ฉันลองคำตอบนี้สำหรับ python

โดยใช้

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

แต่ไม่ได้ผล

ฉันจะเพิ่ม java 8 ได้อย่างไร?


ที่เกี่ยวข้อง: stackoverflow.com/questions/18456611/…
dmcc

คำตอบ:


116

ดูเหมือนว่าจะสามารถเรียกใช้หลายภาษาในไฟล์. travis.yml ไฟล์เดียวโดยใช้matrix:includeคุณลักษณะนี้ ตัวอย่างเช่น repo Github ของฉันมีการจัดเรียงดังนี้:

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 ซึ่งเรียกใช้การทดสอบใน Python, Java และ Objective-C:

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
สิ่งนี้ดูมีแนวโน้ม แต่มันล้มเหลวในเครื่องมือ travis lint: lint.travis-ci.org
meisteg

4
ฉันไม่สามารถพูดกับเครื่องมือผ้าสำลีได้ แต่ฉันสามารถพูดได้ว่าฉันใช้การตั้งค่าแบบนี้มาหลายเดือนแล้วและมันก็ทำงานได้อย่างสมบูรณ์แบบ
Codiak

ฉันใช้การตั้งค่านี้สำหรับ python และ nodejs แทนที่จะใช้python: 3.5เพื่อตั้งค่าเวอร์ชันฉันใช้python:\n - "3.5"(สังเกตว่านี่เป็นสองบรรทัดแยกกัน) ตามที่แนะนำในหน้าทางการของ travis-ci การสร้างล้มเหลวเนื่องจาก travis พยายามดึงข้อมูลpython-["3.5"](สังเกต[และ") คุณรู้ไหมว่าทำไมถึงเป็นเช่นนั้น? หนึ่งซับใช้งานได้
CrazyFrog

3
มีบางอย่างที่แปลกที่นี่: OP ถามเกี่ยวกับการตั้งค่าหลายภาษาในอาคารเดียวกันไม่ใช่เกี่ยวกับการตั้งค่าหลายภาษาสำหรับแต่ละรุ่น
FuzzyAmi

2
@meisteg เมื่อใช้เครื่องมือ travis lint อย่างเป็นทางการจะตรวจสอบได้ดี $ travis lint ~/Desktop/test.yml Hooray, /Users/nathanf/Desktop/test.yml looks valid :)
Nathan F.

24

บนสภาพแวดล้อมการสร้าง Travis Java คุณสามารถใช้nvmเพื่อจัดการNode.js runtimes:

.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.31Node v5


นั่นเป็นทางออกที่ฉันชอบ
Natim

ขอบคุณ! ทำงานได้อย่างสมบูรณ์แบบ!
danieln


13

โครงการของฉันมีแบ็กเอนด์ Python / Django และส่วนหน้า JS / Vue ดังต่อไปนี้:

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

แนวคิดคือเรียกใช้ชุดทดสอบแต่ละชุดในงานของเมทริกซ์หนึ่งชุดสำหรับการทดสอบ Python / Django และอีกชุดสำหรับการทดสอบ JS

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อยู่ใน TravisCI ตัวอย่างเช่นคุณสามารถรวม - nvm install 0.10 - nvm use 0.10 ไว้ในbefore_installส่วนของคุณเพื่อดาวน์โหลดรุ่นล่าสุดของโหนด v0.10.x


3
แต่ฉันจัดการกับไฟล์การกำหนดค่าที่ฉันตอบด้วยตัวเอง
Amr Draz

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.