Как я могу запустить оболочку входа в систему bash в конвейере jenkins (ранее известном как рабочий процесс)?

Я только начинаю преобразовывать свои задания Jenkins в новый инструмент Jenkins Pipeline (workflow), и у меня возникают проблемы с получением команды sh для использования оболочки входа в систему bash.

я пытался

sh '''
#!/bin/bash -l
echo $0
'''

но команда echo $0 всегда выполняется в интерактивной оболочке, а не в оболочке входа в систему bash.


person Jeff    schedule 11.02.2016    source источник
comment
She-bang должен стоять в первой строке скрипта: sh '''#!/bin/bash -l echo $0 '''   -  person izzekil    schedule 11.02.2016
comment
@izzekil прав!!!! ФУ.   -  person Jeff    schedule 11.02.2016


Ответы (1)


@izzekil прав!!!! Большое спасибо!

Итак, немного подробнее о том, что происходит. Я использовал sh с ''' , что указывает на многострочный скрипт. ОДНАКО результирующий сценарий оболочки, который сбрасывается на узел jenkins, будет на одну строку ниже, а не на первую строку. Так что я смог исправить это с помощью этого

sh '''#!/bin/bash -l
echo $0
# more stuff I needed to do,
# like use rvm, which doesn't work with shell, it needs bash.
'''
person Jeff    schedule 11.02.2016
comment
Вы должны быть в состоянии избавиться от sh ''' (и окончания '''). - person gaoithe; 27.01.2017
comment
@gaoithe, не могли бы вы привести пример того, что вы имеете в виду? - person Jeff; 02.02.2017
comment
просто укажите #!/bin/bash в качестве первой строки в конфигурации задания. Я попытался объяснить лучше в редактировании ответа. - person gaoithe; 03.02.2017
comment
@gaoithe, эти строки необходимы, это не задание выполнения оболочки, это использование конвейера Jenkins, так что это задание Jenkins написано в groovy. - person Jeff; 04.02.2017
comment
Ааа. Хорошо. Спасибо. Я понимаю. Дох! Упс. - person gaoithe; 06.02.2017
comment
@Джефф, у меня это тоже работает. Есть ли способ сделать это с помощью «внешнего» сценария bash? Итак, выполнение сценария bash в оболочке, чтобы вам не приходилось помещать в него весь сценарий? - person DenCowboy; 24.11.2017
comment
Есть ли способ указать оболочку для всего Jenkinsfile вместо каждого вызова команды «sh»? - person Joe J; 24.01.2019