创建具有JDK12支持的ssh_jenkins_slave映像

时间:2019-08-11 17:28:07

标签: jenkins jenkins-pipeline jenkins-slave

我正在尝试创建一个支持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模板的提示?

预先感谢

1 个答案:

答案 0 :(得分:1)

我尝试了与您完全一样的文件,只是它没有声纳部分。 构建映像时,是否已将setup-sshd脚本文件包含在Dockerfile旁边的目录中? 您是否在setup-sshd文件上设置了可执行权限?那对我有用。