在 Rails 环境中的 Ruby 中设置 Jenkins

Setting up Jenkins in Ruby on Rails Environment

我正在尝试设置 Jenkins 来构建然后部署我的 rails 应用程序,但我的构建一直失败。这是因为 Jenkins 正在查看 Ruby 的错误版本并且没有使用 RVM。这是构建失败日志:

/tmp/hudson3481773306458146820.sh: line 4: rvm: command not found
/tmp/hudson3481773306458146820.sh: line 5: rvm: command not found
/tmp/hudson3481773306458146820.sh: /usr/local/bin/bundle: /usr/bin/ruby1.9.1: bad interpreter: No such file or directory
/tmp/hudson3481773306458146820.sh: /usr/local/bin/bundle: /usr/bin/ruby1.9.1: bad interpreter: No such file or directory
/tmp/hudson3481773306458146820.sh: /usr/local/bin/bundle: /usr/bin/ruby1.9.1: bad interpreter: No such file or directory
/tmp/hudson3481773306458146820.sh: /usr/local/bin/bundle: /usr/bin/ruby1.9.1: bad interpreter: No such file or directory
Build step 'Execute shell' marked build as failure
Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered
Finished: FAILURE

这是我的构建脚本:

#!/bin/bash
source /home/web/.bashrc
rvm use 2.2.3
rvm info
bundle install
bundle exec rake db:schema:load RAILS_ENV=test
bundle exec rake db:test:prepare
bundle exec rspec spec --order random --fail-fast

我不知道该怎么做,我什至尝试在构建脚本中指定 ruby 版本,但找不到 rvm。

这是我的 .bashrc

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

这里是 rvm 列表的输出:

web@localhost:~$ rvm list

rvm rubies

   ruby-2.1.5 [ x86_64 ]
=* ruby-2.2.3 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

ruby-v

ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]

知道出了什么问题吗?

我认为你有两种选择来解决这个问题:

  • 像为开发人员一样为 jenkins 用户安装 RVM。然后你的构建脚本将理解 rvm.

  • 安装 rvm 插件。 (在这对我有用之前,我必须安装 Jenkins 的 LTS 版本。)然后你可以将 RVM 部分从构建脚本中取出并使其成为一个动作。

我很确定其中任何一个都可以解决上述问题。您不需要两者都做。

(免责声明:Jenkins 本人是新手。)