Хобрук: Ваш путь к мастерству в программировании

Дженкинс использует неправильную версию Ruby (rvm)

Возьмем следующую ситуацию:

  • Использование Дженкинса
  • Установлен rvm с разными версиями ruby(2+)
  • Установлен плагин rvm

Параметр включен. Запустите сборку в среде, управляемой RVM, в Build Environment с версией ruby ​​ruby-2.3.0@global.

Теперь о проблеме. После каждого запуска задания jenkins я вижу следующий вывод:

Capturing environment variables produced by 'rvm use ruby-2.3.0@global'
$ bash -c export
[workspace] $ bash -c " source /usr/local/rvm/scripts/rvm && rvm use --install --create ruby-2.3.0@global && export > rvm.env"
Using /usr/local/rvm/gems/ruby-2.3.0 with gemset global
...

И вроде все должно работать нормально. Но на самом деле jenkins использует ruby-2.2.0, потому что ниже в журнале я нашел это:

+++ __path_to_ruby=/usr/local/rvm/rubies/ruby-2.2.0/bin/ruby
+++ [[ -z /usr/local/rvm/rubies/ruby-2.2.0/bin/ruby ]]
+++ [[ /usr/local/rvm/rubies/ruby-2.2.0/bin/ruby != \/\u\s\r\/\l\o\c\a\l\/\r\v\m* ]]
+++ [[ /usr/local/rvm/rubies/ruby-2.2.0/bin/ruby == \/\u\s\r\/\l\o\c\a\l\/\r\v\m\/\b\i\n\/\r\u\b\y ]]
+++ [[ /usr/local/rvm/rubies/ruby-2.2.0/bin/ruby == \/\u\s\r\/\l\o\c\a\l\/\r\v\m* ]]
+++ [[ -z /usr/local/rvm/gems/ruby-2.2.0 ]]
+++ [[ -z /usr/local/rvm/gems/ruby-2.2.0:/usr/local/rvm/gems/ruby-2.2.0@global ]]
...

И следующая проблема, которая вытекает отсюда:

Gem::InstallError: activesupport requires Ruby version >= 2.2.2.

Также, если я наберу команду ruby -v в области «Выполнить оболочку», то в журнале я увижу это

+ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]

Я также попытался запустить команду rvm use ruby-2.3.0 непосредственно в оболочке Execute.

Также я добавил это в /var/lib/jenkis/.bashrc:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

И попытался изменить $HOME/.rvm на /usr/local/rvm

Но каждый раз результат один и тот же. Дженкинс не использует ruby-2.3.0

Помогите, пожалуйста, разобраться, что я пропустил?


Ответы:


1

Я тоже столкнулся с этой проблемой. Оказалось, что есть проблема, если вы устанавливаете rvm как root. Пришлось полностью удалить rvm и переустановить под пользователем jenkins, после чего плагин корректно загрузил рубины.

Вы можете обнаружить эту проблему, перечислив содержимое каталога, на который указывает переменная Jenkins $HOME. Если нет каталога .rvm, вам может потребоваться переустановка.

24.01.2017
Новые материалы

Что такое гибкие методологии разработки программного обеспечения
Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

Ториго  — революция в игре Го
Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

Математика и интуиция - Часть 1
У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..

Раскрытие возможностей НЛП: часть речевой маркировки и ее проблемы
В сфере обработки естественного языка (NLP) маркировка частей речи (POS) выступает в качестве фундаментального метода, позволяющего компьютерам понимать и анализировать человеческий язык на..

Под поверхностью: раскрытие деталей системы с помощью инструментов Linux CLI
Чем больше вы изучаете Linux и продвигаетесь вперед, тем больше вам нужно проверять информацию о вашей системе. Эта информация может касаться аппаратного обеспечения, такого как процессор,..

Как реализовать линейную регрессию в JavaScript
Узнайте, как реализовать линейную регрессию в JavaScript с помощью ML.js Линейная регрессия — это метод машинного обучения, используемый для моделирования связи между зависимой переменной и..