我如何更新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。