Travis CI birden çok dilde nasıl kurulur


99

Projem hem nodejs hem de java kullanıyor

Bir node_js yapısıyla başlamayı ve ardından java yüklemeyi denedim (çünkü bu bir npm modülüdür)

ancak java'yı yüklemek için komut dosyaları başarısız oldu, ayrıca java ile zaten var olan bir yapı olduğunda onu yüklemeye gerek olduğunu düşünmüyorum.

Bir java derlemesiyle başlamalı ve sonra düğüm kurmalı mıyım?

Bunu deniyorum

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

Göründüğü ilk 2 satırı yok sayan ve java 7 içeren bir node_js yapısı oluşturan ve projem java 8 kullanıyor

Bu cevabı python için denedim

kullanma

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

ama bu işe yaramadı

Java 8'i nasıl ekleyebilirim?


Yanıtlar:


116

Bu matrix:includeözelliği kullanarak bir .travis.yml dosyasında birkaç dil çalıştırmak artık mümkün görünüyor . Örnek olarak, Github depom şu şekilde düzenlenmiştir:

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 ve Objective-C'de testler çalıştıran .travis.yml dosyası:

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

Matristeki her girişi üst düzey bir yapılandırma olarak ele alarak, bu özelliği kullanarak istediğiniz kadar farklı yapılandırma oluşturabilirsiniz. Elbette, tüm diller için geçerli olan ayarlamak istediğiniz herhangi bir parametreniz varsa, bunu en üst düzeyde yapabilirsiniz, burada benim burada yaptığım gibi notifications:email.

Her şey kurulduğunda, her yapıda bunun gibi bir şey elde edersiniz. Boom.

görüntü açıklamasını buraya girin


2
Bu umut verici görünüyordu, ancak travis lint aracında başarısız oluyor: lint.travis-ci.org
meisteg

4
Lint aracıyla konuşamıyorum, ancak birkaç aydır böyle bir kurulum kullandığımı söyleyebilirim ve mükemmel bir şekilde çalıştı.
Codiak

Bu kurulumu python ve nodejs için kullandım. python: 3.5Versiyonu ayarlamak için kullanmak yerine, python:\n - "3.5"travis-ci'nin resmi sayfasında tavsiye edildiği gibi kullandım (bunların iki ayrı satır olduğuna dikkat edin). Travis çalışır almak çünkü inşa başarısız olduğu python-["3.5"](ihbar [ve "). Bunun neden olabileceğini biliyor musunuz? Tek astar işe yarıyor.
CrazyFrog

3
burada tuhaf bir şey var: OP, AYNI BİNADA birden çok dil ayarlamayı sordu, her derleme için bir tane olmak üzere birden çok dil ayarlamakla ilgili değil.
FuzzyAmi

2
@meisteg , resmi travis lint aracını kullanırken , onu iyi doğrular. $ travis lint ~/Desktop/test.yml Hooray, /Users/nathanf/Desktop/test.yml looks valid :)
Nathan F.

24

Travis Java oluşturma ortamında, Node.js çalışma zamanlarını nvmyönetmek için kullanabilirsiniz :

.travis.yml

language: java

jdk:
  - oraclejdk8

env:
  - NODE_VERSION="0.12"

before_install:
  - nvm install $NODE_VERSION

Düğüm sürümünüz çok yeniyse, güncellemeniz nvmde gerekebilir .

Güncellemek nvmiçin şunu yazın .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

Yukarıdaki örnek, önce nasıl güncelleneceğini nvm v0.31, sonra nasıl alınacağını gösterir Node v5.


Bu benim en sevdiğim çözüm.
Natim

Teşekkürler! mükemmel çalıştı!
danieln

13

Bunu kullandım .yml:

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

13

Projemin bir Python / Django arka ucu ve aşağıdaki gibi bir JS / Vue ön ucu var:

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

Buradaki fikir , biri Python / Django testleri için ve diğeri JS için olmak üzere her test paketini bir matris işinde çalıştırmaktır :

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

Ayrıca bakınız


10

Birden çok dil ekleyemezsiniz, bu da gördüğünüz davranışı açıklar ve node_jsayar yalnızca bir düğüm dili projesinde tanınır. Yapabileceğiniz şey, nvmTravisCI'ye dahil edilmiş olanı kullanmaktır . Örneğin, düğümün en son v0.10.x sürümünü indirmek - nvm install 0.10 - nvm use 0.10 için before_installbölümünüze ekleyebilirsiniz.


3
ancak bunu kendi kendime yanıtladığım yapılandırma dosyasıyla yapmayı başardım
Amr Draz

0

Gereğince belgeleri ,

jobs:
  include:
    - language: python
      python: 3.8
      script:
      - python -c "print('Hi from Python!')"

    - language: node_js
      node_js: 12
      script:
      - node -e "console.log('Hi from NodeJS!')"

    - language: java
      jdk: openjdk8
      script:
      - javac -help

İşte bir üretim örneği.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.