在 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 本人是新手。)
我正在尝试设置 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 本人是新手。)