我正在尝试创建一个支持JDK12的自定义ssh_slave_plugin docker模板。我已经参考了当前的ssh_jenkins_slave Dockerfile(https://github.com/jenkinsci/docker-ssh-slave/blob/master/Dockerfile)。但是我无法使其工作,并且jenkins无法启动jenkins奴隶。
上下文如下:运行Jenkins 2.176.2并毫无问题地配置Docker云(它可以连接到Docker引擎以将Docker模板作为jenkins从属服务器剥离)。 使用ssh_jenkins_slave默认映像时,我可以毫无问题地运行它。我拍摄了图像并将JDK版本更新为12:
FROM openjdk:12-jdk
ARG user=jenkins
ARG group=jenkins
ARG uid=1000
ARG gid=1000
ARG JENKINS_AGENT_HOME=/home/${user}
ENV JENKINS_AGENT_HOME ${JENKINS_AGENT_HOME}
RUN groupadd -g ${gid} ${group} \
&& useradd -d "${JENKINS_AGENT_HOME}" -u "${uid}" -g "${gid}" -m -s /bin/bash "${user}"
# setup SSH server
RUN yum install -y openssh-server
RUN sed -i /etc/ssh/sshd_config \
-e 's/#PermitRootLogin.*/PermitRootLogin no/' \
-e 's/#RSAAuthentication.*/RSAAuthentication yes/' \
-e 's/#PasswordAuthentication.*/PasswordAuthentication no/' \
-e 's/#SyslogFacility.*/SyslogFacility AUTH/' \
-e 's/#LogLevel.*/LogLevel INFO/' && \
mkdir /var/run/sshd
#
# Install Sonar Scanner
#
ARG SONAR_SCANNER_VERSION=3.4.0.1729
ENV SONAR_SCANNER_HOME=/opt/sonar-scanner
ENV PATH $PATH:$SONAR_SCANNER_HOME/bin
RUN yum install -y unzip
RUN curl --insecure -o /tmp/sonarscanner.zip -L https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-${SONAR_SCANNER_VERSION}.zip && \
unzip /tmp/sonarscanner.zip -d /opt && mv /opt/sonar-scanner-${SONAR_SCANNER_VERSION} /opt/sonar-scanner && \
rm /tmp/sonarscanner.zip && \
ln -s /opt/sonar-scanner/bin/sonar-scanner /usr/bin/sonar-scanner
VOLUME "${JENKINS_AGENT_HOME}" "/tmp" "/run" "/var/run"
WORKDIR "${JENKINS_AGENT_HOME}"
COPY setup-sshd /usr/local/bin/setup-sshd
EXPOSE 22
ENTRYPOINT ["setup-sshd"]
但是,在配置Docker代理模板并配置为启动Docker映像后,使用SSH连接(注入SSH密钥),我无法在jenkins管道中使用该映像。
我在詹金斯身上看到的错误是:
Reason: Template provisioning failed.
java.io.IOException: SSH service hadn't started after 20 seconds.
at io.jenkins.docker.connector.DockerComputerSSHConnector.createLauncher(DockerComputerSSHConnector.java:261)
在我的本地计算机上,如果我启动带有映像的容器,则可以看到SSH服务器正常启动,并且可以没有任何问题地登录。
有人经历过这种行为吗?以及使用jdk 12创建Jenkins ssh_slave模板的提示?
预先感谢
答案 0 :(得分:1)
我尝试了与您完全一样的文件,只是它没有声纳部分。
构建映像时,是否已将setup-sshd
脚本文件包含在Dockerfile旁边的目录中?
您是否在setup-sshd
文件上设置了可执行权限?那对我有用。