У меня есть параметризованное задание Хадсона , используемое для некоторых развертываний AWS , которые на одном этапе сборки запускают определенные команды оболочки.
Однако этот сценарий стал достаточно сложным, и я хочу «извлечь» его из Hudson в отдельный файл сценария, чтобы его можно было легко корректировать. Затем задание Hudson будет просто обновляться из VCS и выполнять внешний файл сценария.
Мой главный вопрос о передаче параметров в скрипт. У меня есть параметр Hudson с именем AMI_ID
и несколько других. Сценарий ссылается на эти параметры, как если бы они были переменными среды:
echo "Using AMI $AMI_ID and type $TYPE"
Теперь, это хорошо работает внутри Хадсона, но не в том случае, если Хадсон вызывает внешний скрипт. Могу ли я как-то заставить Хадсона установить параметры в качестве переменных среды, чтобы мне не нужно было менять скрипт? Или мой лучший вариант изменить сценарий так, чтобы он принимал параметры командной строки (и, возможно, назначал их именованным переменным для удобства чтения: ami_id=$1; type=$2; ...
)?
Я пробовал что-то подобное, но скрипт не получает правильно замененные значения:
export AMI_ID=$AMI_ID
export TYPE=$TYPE
external-script.sh # this tries to use e.g. $AMI_ID
Бонусный вопрос : когда скрипт находится внутри Гудзона, «вывод консоли» будет содержать как выполненные команды, так и их вывод. Это очень полезно для отладки, когда что-то идет не так со сборкой! Например, здесь строка, начинающаяся с «+», является частью скрипта, а следующая строка - его вывод:
+ ec2-associate-address -K pk.pem -C cert.pem 77.125.116.139 -i i-aa3487fd
ADDRESS 77.125.116.139 i-aa3487fd
При вызове внешнего скрипта вывод Hudson будет содержать только последнюю строку, что затрудняет отладку. Я мог бы cat
файл сценария для stdout перед его запуском, но это тоже не оптимально. В сущности, я бы хотел что-то вроде DOS-стиля " echo on " для сценария, который я вызываю из Гудзона - кто-нибудь знает способ добиться этого?