Zec*_*eck 18 ruby continuous-integration rvm ruby-on-rails-3 jenkins
我是Jenkins CI的新手.我在我的远程Jenkins中安装RVM,当我执行下面的shell时.
#!/bin/bash -x
source ~/.bashrc
rvm use 1.9.3@rails-3.2.3
Run Code Online (Sandbox Code Playgroud)
我得到以下错误.
+ source /var/lib/jenkins/.bashrc
++ PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/var/lib/jenkins/.rvm/bin:/var/lib/jenkins/.rvm/bin
+ rvm use 1.9.3@rails-3.2.3
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
You need to change your terminal settings to allow shell login.
Please visit https://rvm.io/workflow/screen/ for example.
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我什么都不知道.请帮我.
更新:我尝试下面的脚本,但我仍然得到错误:
#!/bin/bash -x
source /home/zeck/.bashrc
[[ -s ".rvmrc" ]] && source .rvmrc
export RAILS_ENV=test
bundle install
Run Code Online (Sandbox Code Playgroud)
错误:
/tmp/hudson457106939700368111.sh: line 5: bundle: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)
Jenkins构建shell无法检测RVM,gemsets和gem.我该怎么办?
更新2:因此詹金斯无法检测到红宝石.
+ ruby -v
/tmp/hudson2505951775163045158.sh: line 5: ruby: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILUR
Run Code Online (Sandbox Code Playgroud)
我没有使用任何jenkins插件,我只是从Build-> Execute shell部分运行脚本.
dis*_*upt 28
正如错误消息所示,RVM需要登录shell.更改hashbang行#!/bin/bash -xl应解决此问题.
mpa*_*pis 11
尝试:
. $(/home/RVM_USER/.rvm/bin/rvm env 1.9.3@rails-3.2.3 --path)
Run Code Online (Sandbox Code Playgroud)
确保运行稳定的RVM:
rvm get stable
Run Code Online (Sandbox Code Playgroud)
注意:最后一个Jenkins版本并不总是接受"source",而是".".RVM_USER是安装RVM的用户.或者,您也可以在主PATH中导出RVM命令.
是的,显然你错过了$HOME/.rvm/bin你的PATH.我在Mac OS X上成功使用了Hudson的rvm.首先要注意的是,除非你定义BASH_ENV环境变量(ENV对于sh),否则.bashrc只能使用交互式非登录shell自动调用.当你执行这样的shell时 - 例如 - 命令行中的以下内容:
$ /bin/bash
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash在脚本中使用时,.bashrc不会被调用.
为了让rvm与Hudson一起工作,我在以下内容中有以下内容.bash_profile:
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
export PATH
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
Run Code Online (Sandbox Code Playgroud)
感谢[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"每次启动新的终端窗口(交互式登录shell)时都启用了rvm.
我没有放任何东西.bashrc,特别是我没有在那里采购rvm脚本.这没有什么不对,但如果任何其他脚本像设置`export BASH_ENV = $ HOME/.bashrc'那样愚蠢,然后调用非交互式shell,你会看到可能发生的事情 - 实际上很容易忘记.
因此,不要将内容加载到.bashrc中,最好使脚本独立于任何shell启动文件,并确保在脚本中设置了正确的环境.我仍然留$HOME/.rvm/bin在我的.bash_profile,但后来我在脚本的开头包括以下内容:
#!/bin/bash
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
rvm use 1.9.3-head@MyGemSet
set -ex
cucumber # just an example
Run Code Online (Sandbox Code Playgroud)
请注意,-e如果以下任何命令set -ex失败,则强制脚本以错误代码退出的选项.这是在使用Hudson脚本时可能需要的行为.说RVM需要登录shell是不正确的.虽然#!/bin/bash -l在脚本中使用会起作用,但它似乎不是最好的方法.
| 归档时间: |
|
| 查看次数: |
25925 次 |
| 最近记录: |