如何默认为Jenkins shell执行的登录shell

时间:2013-06-15 11:10:35

标签: bash jenkins rvm rbenv

我想使用rvm(或rbenv / chruby)来从我的Jenkins作业中选择不同的ruby版本。 默认情况下,Jenkins将使用/ bin / sh,它在Ubuntu上是破折号。

要进行更改,我可以添加

#!/bin/bash -l

到处都是每个shell执行函数的顶部。看到这很烦人的工作,我希望能够将其设置在中心位置。

使用" Shell可执行文件"配置设置,我可以让它运行bash,添加' -l'等参数。但是会失败

  

" / bin / bash -l" -xe /tmp/hudson5660076222778817826.sh致命:   命令执行失败java.io.IOException:无法运行程序   " / bin / bash -l" (在目录中   " / home / jenkins / jobs / workspace / rvm-test"):error = 2,没有这样的文件或   目录

我尝试使用jenkins的rvm插件,但这甚至不会安装在当前版本上。

有什么想法吗? :)

1 个答案:

答案 0 :(得分:12)

  1. 你可以通过创建一个围绕bash的包装器来解决这个问题:

    #!/bin/sh
    # for ex.: /usr/local/bin/login-bash
    exec /bin/bash -l "$@"
    
  2. 如果你想使用默认的ruby,只需使用rvm附带的rvm-shell。 以jenkins用户身份登录并输入:

    $ which rvm-shell
    /home/jenkins/.rvm/bin/rvm-shell
    
  3. 获取rvm-shell的路径。 将此路径用于“Shell可执行文件”选项。