여러 언어로 Travis CI를 설정하는 방법


98

내 프로젝트는 nodejs와 Java를 모두 사용합니다.

node_js 빌드로 시작한 다음 java를 설치하려고 시도했습니다 (npm 모듈이기 때문에)

그러나 Java를 설치하는 스크립트가 실패했으며 Java가 이미 존재하는 빌드가있을 때 설치할 필요가 없다고 생각합니다.

자바 빌드로 시작한 다음 노드를 설치해야합니까?

나는 이것을 시도하고있다

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

처음 두 줄을 무시하고 Java 7이 있고 내 프로젝트가 Java 8을 사용하는 node_js 빌드를 빌드합니다.

나는 파이썬에 대해이 대답 을 시도했습니다.

사용

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

그러나 그것은 작동하지 않았다

Java 8을 어떻게 추가 할 수 있습니까?


답변:


116

matrix:include기능을 사용하여 하나의 .travis.yml 파일에서 여러 언어를 실행할 수있는 것 같습니다 . 예를 들어 내 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

다음은 Python, Java 및 Objective-C에서 테스트를 실행하는 .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
Lint 도구에 대해 말할 수는 없지만 지금까지 이와 같은 설정을 몇 달 동안 사용해 왔으며 완벽하게 작동했다고 말할 수 있습니다.
Codiak

나는이 설정을 python과 nodejs에 사용했습니다. python: 3.5버전을 설정하는 데 사용 하는 대신 python:\n - "3.5"travis-ci의 공식 페이지에서 권장하는대로 사용했습니다 (두 줄로 구분됨). 트래비스의 시도가 검색 할 수 있기 때문에 빌드가 실패 python-["3.5"](을 주목 [하고 "). 그 이유를 알고 있습니까? 한 줄짜리가 작동합니다.
CrazyFrog

3
여기에 이상한 점이 있습니다. OP는 각 빌드마다 하나씩 여러 언어를 설정하는 것이 아니라 동일한 빌드에서 여러 언어를 설정하는 것에 대해 질문했습니다.
FuzzyAmi 2019

2
@meisteg 공식 travis lint 도구를 사용할 때 제대로 확인됩니다. $ travis lint ~/Desktop/test.yml Hooray, /Users/nathanf/Desktop/test.yml looks valid :)
Nathan F.

23

Travis Java 빌드 환경에서 Node.js 런타임 nvm을 관리하는 데 사용할 수 있습니다 .

.travis.yml

language: java

jdk:
  - oraclejdk8

env:
  - NODE_VERSION="0.12"

before_install:
  - nvm install $NODE_VERSION

Node 버전이 최신 버전 인 경우 업데이트해야 할 수도 있습니다 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.


이것이 제가 가장 좋아하는 솔루션입니다.
Natim

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

또한보십시오


12

나는 이것을 사용했다 .yml:

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

10

보고있는 동작을 설명하는 여러 언어를 추가 할 수 없으며 node_js설정은 노드 언어 프로젝트에서만 인식됩니다. 할 수있는 일은 nvmTravisCI에 통합 된 것을 활용하는 것입니다. 예를 들어 섹션에 포함 - nvm install 0.10 - nvm use 0.10 하여 before_installnode의 최신 v0.10.x 릴리스를 다운로드 할 수 있습니다 .


2
하지만 구성 파일 I 자기와 함께 대답을 할 관리 않았다
아 므르 Draz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.