изменить оболочку Jenkins только для одного конвейера - PullRequest
0 голосов
/ 05 сентября 2018

Как я могу заставить Jenkins использовать Bash, а не его собственную оболочку, только для одного конвейера Jenkins / Jenkinsfile? «Агент» помогает мне сделать это?

Я написал сценарий оболочки для развертывания, но некоторые параметры содержат пробелы, которые портят полученную в результате команду, потерянную с некоторыми аргументами. Я нашел, как избежать этой проблемы, глобально настроив тип оболочки Jenkins как Bash. Но когда я изменяю глобальный тип оболочки, мои другие конвейеры Jenkins, использующие синтаксис подключаемого модуля Jenkins, перестают работать, когда они используют команду 'sh' в контейнере Docker. Мой обходной путь - пинг-понг, глобальный параметр типа оболочки, в зависимости от того, какую сборку Jenkins я хочу запустить. Это королевская пита.

1 Ответ

0 голосов
/ 13 сентября 2018

Мне стыдно сказать, что все, что мне было нужно, это шебанг .

Мой Jenkinsfile запускает собственный (bash) сценарий оболочки, используя команду sh Jenkin, как показано ниже:

sh "./deploy.sh \"arg1\" \"arg 2\" \"arg3\""

Чтобы заставить deploy.sh работать в Bash, содержимое deploy.sh должно содержать #!/bin/bash в первой строке, как в:

#!/bin/bash
echo "deploy args: $@"

Несмотря на это, я думаю, что должен быть способ сообщить конвейеру Jenkins, что он должен работать с определенными настройками, такими как sh = bash.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...