【问题标题】:How can I update node.js and install grunt/bower in a python project in Travis CI?如何在 Travis CI 的 python 项目中更新 node.js 并安装 grunt/bower?
【发布时间】:2013-12-06 06:56:35
【问题描述】:

我需要在项目安装过程中使用 grunt。为此,我需要 node.js >= 0.8。但是 Travis CI 中的 python VM 中包含的版本是 0.6。

我尝试下载最后一个二进制文件并将其插入到 PATH 中,但我无法正确导出变量,如果我使用 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)。

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

【问题讨论】:

  • 你确定 Travis 上的 Node 版本吗?构建环境昨天更新了,不过我不记得一年多用过0.6了。
  • 这里是 npm 失败时显示的错误的一部分:npm ERR!节点 -v v0.6.12 npm 错误! npm -v 1.1.4
  • 我相信你可以使用 NVM 来正确切换版本,但不要引用我的话。 PS 0.10.22 应该在 20 号发货

标签: node.js npm gruntjs bower travis-ci


【解决方案1】:

Travis CI 的 Trusty beta 附带“一个包含几乎所有(很快将是所有)我们通常支持的运行时和服务的巨型图像。”

要使用它,请将其添加到您的 .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。

【讨论】:

    【解决方案2】:

    这是我一直在使用的 Travis 配置的修改版本。安装节点的步骤改编自node's install docs。该方法会安装最新的稳定版node。

    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.
    

    【讨论】:

    【解决方案3】:

    我现在有一个工作的 travis 文件,但我对这个解决方案并不满意:

    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 -
    

    我通过将目标更改为 master(从特定的提交 id)更正了 bower 中的错误。我不知道为什么它在 travis 上不起作用但在本地起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多