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
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190127133746361.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjIzMzcyMw==,size_16,color_FFFFFF,t_70)
其中 credentials 设置为jenkins账号,username 为jenkins,私钥为jenkins的私钥
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019012713405110.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjIzMzcyMw==,size_16,color_FFFFFF,t_70)
保存,查看连接是否成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190127134254465.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjIzMzcyMw==,size_16,color_FFFFFF,t_70)
本作品采用《CC 协议》,转载必须注明作者和本文链接
雪花飘
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!