jenkins 节点配置使用小记
jenkins节点容器有两种,一种是ssh-slave,master使用ssh命令连接节点,另一种是jnlp-slave,节点通过url连接master,以下使用的的是ssl-slave
- jnlp-slave 使用相关
https://github.com/jenkinsci/docker-jnlp-s... - ssh-slave 使用相关
https://github.com/jenkinsci/docker-ssh-sl... - 拉取 ssh-slave 仓库代码
https://github.com/jenkinsci/docker-ssh-sl... - 二开 Dockerfile 文件
# 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"]
- 构建镜像 docker-compose up -d --build,查询容器的IP
- 系统管理->节点管理,添加节点,host为slave容器的IP

其中 credentials 设置为jenkins账号,username 为jenkins,私钥为jenkins的私钥

保存,查看连接是否成功

本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: