У меня есть задание трубопровода Дженкинс, в котором я настроить свою среду с Баш скрипт с именем setup.sh, который выглядит как:передавая переменную Баш скрипт в задании Дженкинс трубопровода
#!/bin/bash
export ARCH=$1
echo "architecture = " ${ARCH}
В сценарии трубопровода Дженкинс, айКолл сценарий setup.sh с:
def lib_arch='linux-ubuntu-14.04-x86_64-gcc4.8.4'
sh ". /opt/setup.sh ${lib_arch}"
, к сожалению, кажется, что NO переменные передаются в сценарий setup.sh, и эхо $ {ARCH} возвращает пустую строку! Я попытался сделать так: sh "source /opt/setup.sh $ {lib_arch}" , и это также не соответствует сообщению "source not found". Я также попытался изменить первую строку моего сценария
#!/bin/sh
, но это не помогает. Итак, как я могу передать параметр моему сценарию bash в сценарии сценария Jenkins? Спасибо за помощь.
Update: обходной путь был sugggested Берт Ян Schrijve в этой теме (см):
sh "bash -c \" source /opt/setup.sh ${lib_arch}\""
Я попробовал ваше предложение, и это не удается. Я даже пытался просто сделать: sh ". /opt/setup.sh bla". Ясно, что параметр не передается сценарию оболочки, так как $ # возвращает 0, тогда как в консоли сценария я получаю [testsh] Запуск сценария оболочки +. /opt/setup.sh linux-ubuntu-14.04-x86_64-gcc4.8.4 –
Это странно. Я добавил небольшой пример и протестировал его на Jenkins 2.7.3. В какой версии вы работаете? –
Я использую эту военную версию: 2.19.1. Я считаю, что здесь есть что-то странное. В сценарии вашего конвейера вы не делаете то, что я пытаюсь достичь. В моем случае я пытаюсь дать значение переменной, определенное с def (как вы), в сценарий bash. Как я писал, если я делаю sh "./Opt/setup.sh bla ", и если в моем скрипте я пытаюсь выполнить эхо $ 1, я ясно вижу, что параметр« bla »не указан скрипту. –