Cách thiết lập Travis CI với nhiều ngôn ngữ


98

Dự án của tôi sử dụng cả nodejs và java

Tôi đã thử bắt đầu với bản dựng node_js sau đó cài đặt java (vì đây là một mô-đun npm)

nhưng các tập lệnh để cài đặt java không thành công, ngoài ra, tôi không nghĩ rằng cần phải cài đặt nó khi có một bản dựng với java đã tồn tại.

tôi có nên bắt đầu với một bản dựng java sau đó cài đặt nút không?

Tôi đang thử cái này

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

mà bỏ qua 2 dòng đầu tiên có vẻ như và xây dựng một bản dựng node_js có java 7 và dự án của tôi sử dụng java 8

Tôi đã thử câu trả lời này cho python

sử dụng

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

nhưng điều đó không hoạt động

Làm cách nào để thêm java 8?


Câu trả lời:


115

Có vẻ như bây giờ có thể chạy một số ngôn ngữ trong một tệp .travis.yml bằng matrix:includetính năng này. Ví dụ: repo Github của tôi được sắp xếp như sau:

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

Đây là .travis.yml, chạy các bài kiểm tra bằng Python, Java và 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

Có vẻ như bạn có thể xây dựng nhiều cấu hình khác nhau tùy thích bằng cách sử dụng tính năng này, bằng cách coi mỗi mục nhập trong ma trận là cấu hình cấp cao nhất. Tất nhiên, nếu bạn có bất kỳ tham số nào bạn muốn đặt áp dụng cho tất cả các ngôn ngữ, bạn có thể thực hiện điều đó ở cấp cao nhất, như tôi làm ở đây với notifications:emailphần này.

Khi tất cả được thiết lập, sau đó trên mỗi bản dựng, bạn sẽ nhận được một cái gì đó như thế này. Bùng nổ.

nhập mô tả hình ảnh ở đây


2
Đây có vẻ đầy hứa hẹn, nhưng nó không thành công cụ travis lint: lint.travis-ci.org
meisteg

4
Tôi không thể nói chuyện với công cụ lint, nhưng có thể nói tôi đã sử dụng một thiết lập như thế này trong vài tháng nay và nó đã hoạt động hoàn hảo.
Codiak

Tôi đã sử dụng thiết lập này cho python và nodejs. Thay vì sử dụng python: 3.5để thiết lập phiên bản, tôi đã sử dụng python:\n - "3.5"(lưu ý đây là hai dòng riêng biệt) theo khuyến nghị trong trang chính thức của travis-ci. Quá trình xây dựng không thành công vì travis cố gắng truy xuất python-["3.5"](chú ý dấu ["). Bạn có biết tại sao có thể như vậy không? Một lớp lót hoạt động.
CrazyFrog

3
Có điều gì đó kỳ lạ ở đây: OP đã hỏi về việc thiết lập nhiều ngôn ngữ TRONG CÙNG TÒA NHÀ, không phải về việc thiết lập nhiều ngôn ngữ, một ngôn ngữ cho mỗi bản dựng.
FuzzyAmi

2
@meisteg khi sử dụng công cụ travis lint chính thức, nó xác nhận nó tốt. $ travis lint ~/Desktop/test.yml Hooray, /Users/nathanf/Desktop/test.yml looks valid :)
Nathan F.

23

Trên môi trường xây dựng Travis Java, bạn có thể sử dụng nvmđể quản lý thời gian chạy Node.js :

.travis.yml

language: java

jdk:
  - oraclejdk8

env:
  - NODE_VERSION="0.12"

before_install:
  - nvm install $NODE_VERSION

Nếu phiên bản Node của bạn rất mới, bạn cũng có thể phải cập nhật nvm.

Để cập nhật nvm, hãy viết điều này trong .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

Ví dụ trên cho thấy cách cập nhật đầu tiên nvm v0.31, sau đó tải xuống Node v5.


Đó là giải pháp yêu thích của tôi.
Natim 20/02/17

13

Dự án của tôi có phần phụ trợ Python / Django và giao diện người dùng JS / Vue như bên dưới:

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

Ý tưởng là chạy từng bộ thử nghiệm trong công việc của ma trận , một cho các thử nghiệm Python / Django và một cho các thử nghiệm 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

Xem thêm


12

Tôi đã sử dụng cái này .yml:

language: java
jdk:
    - oraclejdk8
node_js: "0.10"
install: "npm install"
script: "npm test"

10

Bạn không thể thêm nhiều ngôn ngữ, điều này giải thích hành vi bạn đang thấy và node_jscài đặt sẽ chỉ được nhận dạng trong một dự án ngôn ngữ nút. Những gì bạn có thể làm là sử dụng kết hợp nvmtrong TravisCI. Ví dụ: bạn có thể bao gồm - nvm install 0.10 - nvm use 0.10 trong before_installphần của mình để tải xuống bản phát hành v0.10.x mới nhất của nút.


2
nhưng tôi đã quản lý để làm điều đó với các tập tin cấu hình tôi tự trả lời với
Amr Draz
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.