jenkins節點配置使用小記

jenkins節點容器有兩種,一種是ssh-slave,master使用ssh命令連接節點,另一種是jnlp-slave,節點通過url連接master,以下使用的的是ssl-slave

# 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 <[email protected]>"

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的私鑰
    在這裏插入圖片描述
    保存,查看連接是否成功
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章