2013-11-21 4 views
5

Ich muss grunt während der Installation meines Projekts verwenden. Ich brauche node.js> = 0.8 dafür. Die in einer Python-VM in Travis CI enthaltene Version ist 0.6.Wie kann ich node.js aktualisieren und grunt/bower in einem Python-Projekt in Travis CI installieren?

Ich habe versucht, die letzten Binärdateien herunterzuladen und in den PATH einzufügen, aber ich konnte die Variable nicht korrekt exportieren, und wenn ich sie mit dem Parameter env: von travis änderte, hätte sie den Rest des PATH nicht gehabt.

Wenn ich direkt die Binärdateien (./node-v0.10.22-linux-x64/bin/npm install ...) verwende, wird es in ./node-v0.10.22-linux-x64/bin/ installiert und wenn ich Grunt verwenden möchte, wird es bower aufrufen (eine der Aufgabe), aber es wird fehlschlagen. (Schwerwiegender Fehler: Fehler beim Ausführen von git checkout e6f8a58dbce5858586564a1ba4543f122ef63225, Beendigungscode von # 128).

Also, was ist die beste Lösung, um node.js zu aktualisieren und Binärdateien zu installieren, die ich brauche, um sie in Travis CI zu verwenden?

+0

Sind Sie sich sicher über die Node-Version auf Travis? Die Build-Umgebung wurde gestern aktualisiert, aber ich erinnere mich nicht daran, dass sie 0,6 in einem Jahr verwendet hat. – nschonni

+0

Hier ist ein Teil des Fehlers von npm angezeigt, wenn es fehlgeschlagen ist: npm ERR! Knoten -v v0.6.12 npm ERR! npm -v 1.1.4 – Gagaro

+0

Ich glaube, Sie können NVM verwenden, um Versionen richtig zu wechseln, aber zitieren Sie mich nicht darauf. PS 0.10.22 sollte auf der 20. – nschonni

Antwort

4

Hier ist eine modifizierte Version der Travis-Konfiguration, die ich verwendet habe. Die Schritte zum Installieren des Knotens werden von node's install docs angepasst. Diese Methode installiert die neueste stabile Version des Knotens.

language: python 
python: 
    - "2.7" 
    - "3.3" 

install: 
    # Python test requirements 
    - pip install -r requirements.txt 
    - pip install nose coverage selenium 

    # JavaScript test requirements 
    - sudo add-apt-repository -y ppa:chris-lea/node.js 
    - sudo apt-get -y update 
    - sudo apt-get -y install nodejs 
    - sudo npm install -g grunt-cli 
    - sudo npm install -g bower 
    - sudo npm install 

before_script: 
    - bower install 

script: 
    # Run Python tests and generate coverage statistics 
    - nosetests --with-coverage 

    # Run tests for JavaScript 
    - grunt test 

# etc., etc. 
+0

Weise besser als meine versendet worden sein, danke! – Gagaro

+0

@mjumbewu Das funktioniert nicht für mich, es gibt v0.10.36 vorher und nachher: ​​https://github.com/hugovk/test/blob/upgrade-node/.travis.yml https://travi-ci.org/hugovk/test/jobs/166663128 – Hugo

+0

Ich fand einen einfacheren Weg: http://StackOverflow.com/a/39973978/724176 – Hugo

0

Ich habe eine Arbeits travis Datei jetzt, aber ich bin nicht wirklich glücklich mit dieser Lösung:

language: python 
python: 2.7 
install: 
    - sudo apt-get -qq install libfreetype6-dev liblcms1-dev libwebp-dev memcached 
    - wget http://nodejs.org/dist/v0.10.22/node-v0.10.22-linux-x64.tar.gz 
    - tar xzvf node-v0.10.22-linux-x64.tar.gz 
    - sudo ./node-v0.10.22-linux-x64/bin/npm install -g bower grunt-cli 
    - mkdir -p buildout-cache/eggs 
    - mkdir -p buildout-cache/downloads 
    - python bootstrap.py -c travis.cfg 
    - bin/buildout -N -c travis.cfg install download install 
    - bin/buildout -N -c travis.cfg 
    - cd path/to/resources/folder 
    - sudo ../../../../node-v0.10.22-linux-x64/bin/npm install 
    - ../../../../node-v0.10.22-linux-x64/bin/bower install 
    - ../../../../node-v0.10.22-linux-x64/bin/grunt 
    - cd - 

ich den Fehler in Bower korrigiert, indem das Ziel Master zu ändern (von einem bestimmten commit id). Ich weiß nicht, warum es nicht auf Travis funktioniert, sondern lokal funktioniert.

0

Travis CI Trusty beta kommt mit „A mega Bild, das wird fast die gesamte enthält unsere allgemein unterstützten Runtimes und Dienstleistungen (bald alle sein).“

es verwenden zu können, fügen Sie diese zu Ihrer .travis.yml:

sudo: required 
dist: trusty 

Zum Beispiel: statt v0

sudo: required 
dist: trusty 

language: python 

python: 
- 'pypy' 
- 'pypy3' 
- '2.6' 
- '2.7' 
- '3.2' 
- '3.3' 
- '3.4' 
- '3.5' 

script: 
    - python --version 
    - node --version 

Zum Zeitpunkt des Schreibens dieser Knoten V4.1.2 enthält. 10.36.