创建支持 JDK12 的ssh_jenkins_slave映像



我正在尝试创建一个支持 JDK12 的自定义ssh_slave_plugin docker 模板。我已经参考了当前ssh_jenkins_slave Dockerfile (https://github.com/jenkinsci/docker-ssh-slave/blob/master/Dockerfile(。但是我无法让它工作,詹金斯也无法启动詹金斯奴隶。

上下文如下:运行 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 管道中使用此映像。

我在 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 模板的提示?

提前致谢

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

最新更新