2016-07-19 3 views
4

Я пытаюсь настроить Gitlab CI для моего проекта Ruby on Rails, но столкнулся с ошибкой, которую я не знаю, как исправить.Ошибка установки Gitlab CI - Не удалось найти исполняемый файл JavaScript

Приложение работает на Ruby 2.3.1, Rails 5.0 и использует базу данных postgreSQL.

Мой текущий файл .gitlab.ci.yml выглядит следующим образом:

# https://hub.docker.com/r/library/ruby/tags/ 
image: "ruby:2.3.0" 

# Pick zero or more services to be used on all builds. 
# Only needed when using a docker container to run your tests in. 
# Check out: http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#what-is-service 
services: 
    - redis:latest 
    - postgres:latest 
    - node:latest 

# This is a basic example for a gem or script which doesn't use 
# services such as redis or postgres 
before_script: 
    - gem install bundler   # Bundler is not installed with the image 
    - bundle install -j $(nproc) # Install dependencies 

rubocop: 
    script: 
    - rubocop 

rspec: 
    script: 
    - rspec spec 

rails: 
    script: 
    - rails db:migrate 
    - rspec spec 

Так что, как предполагается использовать NodeJS как время выполнения. Однако я получаю следующую ошибку:

$ rails db:migrate 
rails aborted! 
Bundler::GemRequireError: There was an error while trying to load the gem 'uglifier'. 
Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. 
Backtrace for gem load error is: 
/usr/local/bundle/gems/execjs-2.7.0/lib/execjs/runtimes.rb:58:in `autodetect' 
/usr/local/bundle/gems/execjs-2.7.0/lib/execjs.rb:5:in `<module:ExecJS>' 
/usr/local/bundle/gems/execjs-2.7.0/lib/execjs.rb:4:in `<top (required)>' 
/usr/local/bundle/gems/activesupport-5.0.0.rc2/lib/active_support/dependencies.rb:293:in `require' 
/usr/local/bundle/gems/activesupport-5.0.0.rc2/lib/active_support/dependencies.rb:293:in `block in require' 
/usr/local/bundle/gems/activesupport-5.0.0.rc2/lib/active_support/dependencies.rb:259:in `load_dependency' 
/usr/local/bundle/gems/activesupport-5.0.0.rc2/lib/active_support/dependencies.rb:293:in `require' 
/usr/local/bundle/gems/uglifier-3.0.0/lib/uglifier.rb:5:in `<top (required)>' 
+0

Вы установили NodeJS на вашей системе, хотя? В какой системе это? – miccet

+0

@miccet Это система: https://about.gitlab.com/gitlab-ci/ – Severin

ответ

4

Вам необходимо выполнить javascript runtime (nodejs), установить их.

Ubuntu Пользователи

sudo apt-get install nodejs 

CentOS/RedHat Пользователи

sudo yum install nodejs 

Если вы не можете установить nodejs вы можете использовать therubyracer камень. Описание из репозитория:

Embed the V8 JavaScript interpreter into Ruby.

Добавить эти строки в Gemfile

gem 'therubyracer', platforms: :ruby 
+0

Все должно быть определено в этом файле. Как вы можете видеть, для настройки среды используются докеры. Вышеизложенное является действительным для системы, к которой у вас есть реальный доступ, что на самом деле не относится к этому серверу CI (https://about.gitlab.com/gitlab-ci/). – Severin

+0

@Severin, поскольку я понимаю «докеры», это автономные экземпляры, но вам нужно «nodejs» на примере с рельсами –

+0

Да. Проблема в том, что вы не можете запускать эти команды настройки на Gitlab CI, как вы показали выше. Поэтому просто добавив его в раздел 'before_script', вы получите сообщение об ошибке. Как вы предполагаете, что он может быть настроен в этой среде? – Severin