
Я использую два сервера CentOS. Я не использую никаких репозиториев кода. В Jenkins, когда я нажимаю «Новый элемент», я не вижу места для ввода целевого сервера. Я ожидаю место для настройки целевого сервера для данной сборки (например, для запуска команды bash или передачи файла с сервера Jenkins на целевой сервер). Поскольку Jenkins работает как пользователь Jenkins на стороне Linux, он не может подключаться по SSH как root. Я хотел бы быть пользователем root и выполнить команду после передачи файла с сервера Linux, который поддерживает Jenkins. Я мог бы сделать это с помощью собственных команд оболочки в шагах сборки «Новый элемент» Jenkins. Для таких команд есть свободное текстовое поле. Но я не знаю, как интерактивно ответить на запрос пароля.
Где мне настроить целевой сервер для данного развертывания?
Могу ли я жестко закодировать пароль root в задании Jenkins? Если да, то как это сделать. Я не хочу устанавливать sshpass.
Помимо основного Jenkins, какие плагины необходимы для развертывания файлов с одного сервера Linux на другой сервер Linux?
решение1
В Jenkins вы используете метки для определения того, где может быть построен проект. После создания нового элемента вы увидите (в конфигурации задания) флажок с именем «Ограничить место запуска этого проекта». Здесь можно либо использовать имя подчиненного узла (например, slave4.mycompany), либо создать метку, которая будет контейнером для нескольких подчиненных узлов. После правильного заполнения это задание всегда будет строиться на указанном подчиненном узле.
Если вам нужна большая функциональность, попробуйте плагин параметров NodeLabel (nodelabelparameter). Вы можете установить его из Manage Jenkins > Manage Plugins > Available.
Чтобы определить, на каком узле вы находитесь во время сборки, вы можете, например, вручную задать постоянные переменные среды на обоих подчиненных узлах сборки, например, $SLAVENAME, возвращающую «buildslave1», или использовать команду linux «hostname» в своих скриптах для определения текущего контекста и на основе этого вывода решить, как действовать дальше.