# The MIT License
#
# Copyright (c) 2015, CloudBees, Inc.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
FROM openjdk:8-jdk
LABEL MAINTAINER="Nicolas De Loof <nicolas.deloof@gmail.com>"
ARG user=jenkins
ARG group=jenkins
ARG uid=1000
ARG gid=1000
#修改这里的路径,要设置 jenkins 的主目录路径与master的一致才行
ARG JENKINS_AGENT_HOME=/var/jenkins_home
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}"
# 与 master 环境一致,安装 python3环境和 node 环境
COPY ansible /etc/ansible
COPY pip /root/.pip
COPY Python-3.6.3.tar /usr/local/src/
COPY node-v10.15.0-linux-x64.tar /usr/local/src/
# setup SSH server
RUN apt-get update \
&& apt-get install --no-install-recommends -y openssh-server \
&& apt-get install -y rsync make gcc zlib* openssl* libssl-dev vim \
&& cd /usr/local/src \
&& tar -xf Python-3.6.3.tar \
&& cd Python-3.6.3 \
&& ./configure && make && make install \
&& pip3 install cryptography==2.4.2 \
&& pip3 install paramiko \
&& pip3 install ansible==2.3.1.0
RUN cd /usr/local/src \
&& tar xf node-v10.15.0-linux-x64.tar \
&& cp node-v10.15.0-linux-x64 /usr/local/node-v10 -rf \
&& ln -s /usr/local/node-v10/bin/node /usr/local/bin/node \
&& ln -s /usr/local/node-v10/bin/npm /usr/local/bin/npm \
&& npm config set registry https://registry.npm.taobao.org \
&& rm -rf /usr/local/src/* \
&& rm -rf /var/lib/apt/lists/*
RUN sed -i "/StrictHostKeyChecking/d" /etc/ssh/ssh_config
RUN echo "StrictHostKeyChecking no" >>/etc/ssh/ssh_config
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
VOLUME "${JENKINS_AGENT_HOME}" "/tmp" "/run" "/var/run"
WORKDIR "${JENKINS_AGENT_HOME}"
COPY setup-sshd /usr/local/bin/setup-sshd
# 添加拉取代码的密钥
COPY id_rsa "${JENKINS_AGENT_HOME}/.ssh/"
RUN chown -R jenkins.jenkins "${JENKINS_AGENT_HOME}/.ssh"
# timezone 内容为 Asia/Shanghai,修改节点容器时间为东八区时间
COPY timezone /etc/
# bashrc 内容为 export LANG=C.UTF-8 ,如果不在jenkins 用户主目录设置这个内容,java程序无法解析中文,打开节点的系统信息会发布 file.encoding和sun.jnu.encoding的值为ascii码,添加.bashrc并设置 LANG=C.UTF-8后,这两个key的值为UTF-8,这个问题处理了很久,要不中文路径是解析不了的
COPY bashrc "${JENKINS_AGENT_HOME}/.bashrc"
RUN chown jenkins.jenkins "${JENKINS_AGENT_HOME}/.bashrc"
EXPOSE 22
ENTRYPOINT ["setup-sshd"]