#docker #jenkins #alpine
#docker #дженкинс #alpine-linux
Вопрос:
Я добавил нового рабочего / ведомого с помощью шаблона агента плагина Docker, который использует изображение Alpine. Экземпляр агента создан, вызван и аутентификация выполнена успешно, но запуск агента на подчиненном устройстве завершается ошибкой со следующей ошибкой (которую я получаю из Jenkins> Nodes> my_node_id > Подробнее см. Журнал):
[03/27/19 18:11:39] [SSH] Authentication successful.
SSH connection reports a garbage before a command execution.
Check your .bashrc, .profile, and so on to make sure it is quiet.
The received junk text is as follows:
nologin: this account is not available
null
[03/27/19 18:11:39] Launch failed - cleaning up connection
[03/27/19 18:11:39] [SSH] Connection closed.
Для меня недостаточно информации для отладки этого — только вывод ошибки из какой-то неизвестной команды. Похоже, что агент выдает какую-то команду с nologin
параметром, который неверно интерпретируется как идентификатор пользователя. Я предполагаю, что это какая-то проблема с конфигурацией подчиненного образа или установкой пакета.
Есть ли какой-либо способ, которым я могу точно узнать, какие команды выдал агент? Есть ли способ получить более полные журналы запуска агента?
FWIW вот мой подчиненный файл Dockerfile:
FROM docker:stable-dind
RUN apk update;
apk upgrade;
apk add git;
apk add python3;
pip3 install pyyaml pexpect requests ruamel.yaml;
apk add openjdk8;
apk add curl;
apk add sudo;
apk add bash;
apk add openssh-server;
rm -rf /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_dsa_key;
/usr/bin/ssh-keygen -A
EXPOSE 22
# Docker and Jenkins users
RUN addgroup -g 1001 -S docker;
adduser -D -u 1001 -S appuser -G docker;
addgroup -S jenkins; adduser -S jenkins -G jenkins;
echo "jenkins:xxxxxxxxx" | chpasswd;
chown -R jenkins:jenkins /home/jenkins
CMD ["/usr/sbin/sshd", "-D"]
Ответ №1:
nologin: this account is not available
Проблема заключалась в том, что Jenkins agent требует bash, а не sh. Итак, изменение Dockerfile adduser устранило эту проблему:
adduser -S jenkins -G jenkins --shell /bin/bash
Теперь перейдем к следующей ошибке 🙂
Обратите внимание, я не выяснил, как получить более подробную информацию о командах агента или журналах. Если кто-нибудь знает, что мне было бы интересно узнать, как.