Как я могу по умолчанию использовать оболочку входа для выполнения оболочки Jenkins

Я хочу использовать rvm (или rbenv/chruby, если на то пошло), чтобы выбрать разные версии ruby ​​из моих заданий Jenkins. По умолчанию Jenkins будет использовать /bin/sh, что на Ubuntu, тире.

Чтобы это изменить, я могу добавить

#!/bin/bash -l

В верхней части каждой оболочки выполняем функцию везде. Увидев, что это очень неприятная работа, я хотел бы установить ее где-то в центре.

Используя настройку конфигурации "Shell executable", я могу заставить ее запускать bash, добавление таких параметров, как '-l', приведет к ошибке с

"/bin/ bash -l" -xe/tmp/hudson5660076222778817826.sh FATAL: Ошибка выполнения команды java.io.IOException: не удается запустить программу "/bin/bash -l" (в каталоге "/home/jenkins/jobs/workspace/rvm-test" ): error = 2, Нет такого файла или Каталог

Я попытался использовать rvm-плагин для jenkins, но это даже не устанавливается в текущей версии.

Любые идеи?:)

Ответ 1

  • Вы можете обойтись, создав обертку вокруг bash:

    #!/bin/sh
    # for ex.: /usr/local/bin/login-bash
    exec /bin/bash -l "[email protected]"
    
  • Если вы хотите использовать рубин по умолчанию, просто используйте rvm-shell, который поставляется с rvm. Войдите в систему как пользователь jenkins и введите:

    $ which rvm-shell
    /home/jenkins/.rvm/bin/rvm-shell
    

чтобы получить путь к rvm-оболочке. Используйте этот путь для опции "Shell executable".