Ruby on rails 为Jenkins构建加载RVM失败

Ruby on rails 为Jenkins构建加载RVM失败,ruby-on-rails,jenkins,rvm,Ruby On Rails,Jenkins,Rvm,我正在尝试在我的企业中部署一个实验性的Rails应用程序。这里的一切都是针对Java开发的,所以我必须开拓新的领域,以获得公司对Rails的认可 我需要使用Jenkins CI(1.580版)在办公室的CentOS(5.9版)临时服务器上部署我的Rails 4.1.4应用程序(ruby-2.1.2),作为概念证明,然后我的应用程序才能被允许靠近生产服务器 我在Jenkins中安装了以下插件并重新启动:Hudson Ruby插件、rvm、Rake插件、Ruby运行时、Jenkins的RubyMet

我正在尝试在我的企业中部署一个实验性的Rails应用程序。这里的一切都是针对Java开发的,所以我必须开拓新的领域,以获得公司对Rails的认可

我需要使用Jenkins CI(1.580版)在办公室的CentOS(5.9版)临时服务器上部署我的Rails 4.1.4应用程序(ruby-2.1.2),作为概念证明,然后我的应用程序才能被允许靠近生产服务器

我在Jenkins中安装了以下插件并重新启动:Hudson Ruby插件、rvm、Rake插件、Ruby运行时、Jenkins的RubyMetrics插件、GIT客户端插件、GIT插件、GitHub API插件、GitHub插件

Jenkins构建似乎在RVM初始化脚本期间失败,输出如下

我的Jenkins.bashrc文件如下所示:

#/var/lib/jenkins/.bashrc
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
和.rvmrc:

#/var/lib/jenkins/.rvmrc
export rvm_trust_rvmrcs_flag=1 # always trust project .rvmrc
export rvm_install_on_use_flag=1 # auto install rubies
export rvm_gemset_create_on_use_flag=1 # auto install gemsets
我已经尝试过使用多用户说明对RVM进行核爆和重新安装,并确保我的jenkins用户是RVM组的成员

我的构建脚本如下所示:

source ~/.bashrc         # Loads RVM
cd .      # Loads the RVM environment set in the .rvmrc file
# set env vars
#export GEM_PATH=/usr/local/lib/ruby/gems/1.2/gems
#export CI_REPORTS=results
export RAILS_ENV=test
#cp config/database.yml.example config/database.yml  
# creates a database.yml
bundle install           # Installs gems
rake db:schema:load      # Loads all the database schema
rake                     # Runs RSpec tests
下面是Jenkins完整的控制台输出

Started by user Pete
Building in workspace /var/lib/jenkins/jobs/MerchantManager/workspace
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://github.com/***/epgDataPoc # timeout=10
Fetching upstream changes from https://github.com/***/epgDataPoc
 > git --version # timeout=10
using .gitcredentials to set credentials
 > git config --local credential.helper store --file=/tmp/git5734173224303904567.credentials # timeout=10
 > git fetch --tags --progress https://github.com/***/epgDataPoc +refs/heads/*:refs/remotes/origin/*
 > git config --local --remove-section credential # timeout=10
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 8bced4d8fecd4135bcb4868aa4011e140adf46d3 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 8bced4d8fecd4135bcb4868aa4011e140adf46d3
 > git rev-list 8bced4d8fecd4135bcb4868aa4011e140adf46d3 # timeout=10
[workspace] $ /bin/bash -xe /tmp/hudson1400066644804618273.sh
+ source /var/lib/jenkins/.bashrc
++ [[ -s /var/lib/jenkins/.rvm/scripts/rvm ]]
++ source /var/lib/jenkins/.rvm/scripts/rvm
+++ builtin test -n '3.2.25(1)-release' -o -n ''
+++ case "`uname`" in
++++ uname
++++ command ps -p 29628 -o ucomm=
++++ ps -p 29628 -o ucomm=
+++ __shell_name=bash
+++ case "$__shell_name" in
+++ unset __shell_name
+++ __rvm_has_opt posix
+++ [[ -n '' ]]
+++ [[ -n 3.2.25(1)-release ]]
+++ [[ :braceexpand:errexit:hashall:interactive-comments:xtrace: =~ :posix: ]]
+++ return 1
+++ export HOME rvm_prefix rvm_user_install_flag rvm_path
+++ HOME=/var/lib/jenkins
+++ [[ -n '' ]]
++++ umask
+++ export rvm_stored_umask=0022
+++ rvm_stored_umask=0022
+++ ((  0 == 0  ))
+++ rvm_rvmrc_files=("/etc/rvmrc" "$HOME/.rvmrc")
+++ [[ -n '' ]]
+++ for rvmrc in '"${rvm_rvmrc_files[@]}"'
+++ [[ -f /etc/rvmrc ]]
+++ GREP_OPTIONS=
+++ command grep '^\s*rvm .*$' /etc/rvmrc
Build step 'Execute shell' marked build as failure
Publishing rails stats report...
hudson.model.StreamBuildListener@1bb557c8
Finished: FAILURE

我通过反复试验解决了这个问题:

通过在.bashrc中交换这些行:

#/var/lib/jenkins/.bashrc
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
并对我的构建脚本进行以下更改:

#!/bin/bash
source $JENKINS_HOME/.bashrc
rvm use ruby-2.1.2@datapoc
# Set "fail on error" in bash
set -e
# Do any setup
# e.g. possibly do 'rake db:migrate db:test:prepare' here
#cp config/database.example.yml config/database.yml
bundle install
rake db:schema:load
rake

使用rvm 1.26.4在OSX Yosemite上获得相同的问题