制作jenkins-slave for java的镜像
制作基础镜像os2
FROM debian:stretch
MAINTAINER suredandan xrzp@qq.com
ENV TIMEZONE=Asia/Shanghai \
LANG=zh_CN.UTF-8
RUN echo "${TIMEZONE}" > /etc/timezone \
&& echo "$LANG UTF-8" > /etc/locale.gen \
&& apt-get update -q \
&& ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \
&& mkdir -p /home/jenkins/.jenkins \
&& mkdir -p /home/jenkins/agent \
&& mkdir -p /usr/share/jenkins
# COPY chhostname.sh /usr/local/bin/chhostname.sh
# java/locale/DinD/svn/jnlp
RUN DEBIAN_FRONTEND=noninteractive apt-get install -yq vim wget curl apt-utils dialog locales apt-transport-https build-essential bzip2 ca-certificates sudo jq unzip zip gnupg2 software-pr
operties-common \ && update-locale LANG=$LANG \
&& locale-gen $LANG \
&& DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales \
&& curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add - \
&& add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable" \
&& apt-get update -y \
&& apt-get install -y docker-ce \
&& apt-get install -y subversion \
&& groupadd -g 10000 jenkins \
&& useradd -c "Jenkins user" -d $HOME -u 10000 -g 10000 -m jenkins \
&& usermod -a -G docker jenkins \
&& sed -i '/^root/a\jenkins ALL=(ALL:ALL) NOPASSWD:ALL' /etc/sudoers
USER root
WORKDIR /home/jenkins
docker build -t 192.168.3.27:8888/ops/os2 .
docker push 192.168.3.27:8888/ops/os2
制作基于os2的jenkins-slave
[root@master jenkins_slave_2]# ls -l
total 247672
-rw-r--r-- 1 root root 8799579 Dec 1 21:22 apache-maven-3.5.3-bin.tar.gz
-rw------- 1 root root 6347 Dec 5 11:47 config
-rw-r--r-- 1 root root 514 Dec 4 23:40 Dockerfile
drwxr-xr-x 8 10 143 255 Sep 6 2017 jdk
-rw-r--r-- 1 root root 189736377 Dec 1 16:29 jdk-8u151-linux-x64.tar.gz
-rwxr-xr-x 1 root root 2033 Dec 4 13:33 jenkins-slave
-rwxr-xr-x 1 root root 54277604 Dec 1 16:28 kubectl
drwxr-xr-x 6 root root 99 Dec 1 21:22 maven
-rw-r--r-- 1 root root 770802 Dec 1 16:24 slave.jar
Dockerfile如下:
FROM 192.168.3.27:8888/ops/os2
MAINTAINER suredandan xrzp@qq.com
RUN mkdir -p /usr/local/maven \
&& mkdir -p /usr/local/jdk \
&& mkdir -p /root/.kube
COPY jdk /usr/local/jdk
COPY maven /usr/local/maven
COPY kubectl /usr/local/bin/kubectl
COPY jenkins-slave /usr/local/bin/jenkins-slave
COPY slave.jar /usr/share/jenkins
COPY config /root/.kube/
ENV JAVA_HOME=/usr/local/jdk \
MAVEN_HOME=/usr/local/maven \
PATH=/usr/local/jdk/bin:/usr/local/maven/bin:$PATH
docker build -t 192.168.3.27:8888/ops/jenkins-slave4 .
docker push 192.168.3.27:8888/ops/jenkins-slave4
说明:
- 目录jdk是
jdk-8u151-linux-x64.tar.gz
解压后的目录,目的是让每个slave都在镜像中就有jdk环境 - 目录maven是
apache-maven-3.5.3-bin.tar.gz
解压后的目录,目的是让每个slave都有mvn环境 - kubectl是二进制的kubectl文件
- jenkins-slave 是 github的jenkinsci 提供的执行文件
- slave.jar 是部署了jenkins 之后jenkins自己提供的一个jar包
- 一般路径为:
http://yourserver:port/jnlpJars/slave.jar
- 在本文环境下的路径为:
http://192.168.3.28:30001/jnlpJars/slave.jar
- 一般路径为:
- config文件是k8s集群下 /root/.kube/config