Как мне отладить ошибку запуска агента Jenkins?

#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

Теперь перейдем к следующей ошибке 🙂

Обратите внимание, я не выяснил, как получить более подробную информацию о командах агента или журналах. Если кто-нибудь знает, что мне было бы интересно узнать, как.