我如何更新node.js并在Travis CI中的python项目中安装grunt / bower?

我需要在安装我的项目时使用grunt。 我需要node.js> = 0.8。 但Travis CI中的python虚拟机的版本是0.6。

我尝试下载最后一个二进制文件并将其插入到PATH中,但是我无法正确导出variables,如果使用travis的env:参数更改它,则不会有PATH的其余部分。

如果我直接使用二进制文件( ./node-v0.10.22-linux-x64/bin/npm install ... ),它会将它们安装在./node-v0.10.22-linux-x64/bin/ ,当我想要使用grunt,它会调用bower(任务之一),但是会失败。 (致命错误:无法执行git checkout e6f8a58dbce5858586564a1ba4543f122ef63225,退出代码#128)。

那么,什么是最好的解决scheme来更新node.js并安装我需要在Travis CI中使用它们的二进制文件?

这是我一直在使用的Travisconfiguration的修改版本。 安装节点的步骤根据节点的安装文档进行调整 。 此方法将安装最新的稳定版本的节点。

 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. 

我现在有一个工作的Travis文件,但是我对这个解决scheme并不满意:

 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 - 

我通过将目标更改为主(从特定的提交ID)更正了bower中的错误。 我不知道为什么它不适用于特拉维斯,但在当地工作。

Travis CI的Trustytesting版带有“一个巨大的图像,它将包含我们通常支持的所有运行时和服务(几乎全部)”。

要使用它,添加到你的.travis.yml:

 sudo: required dist: trusty 

例如:

 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 

在编写本文时,这包含了Node v4.1.2而不是v0.10.36。