此教程所使用的所有文件,均可在 https://github.com/xuejipeng/jenkins-k8s 找到
一、制作jenkins-slave镜像
因为官方的 jnlp 文件只是基础镜像,值提供了 jnlp 连接 jenkins-master 的功能,因为不同的构建任务需要用到的环境不一,需要根据不同的环境构建不同的jnlp镜像,下面是我的 Dockerfile ,大家可以跟我不同的需求做些修改
cat Dockerfile
FROM centos
#定义jnlp的版本
ARG VERSION=3.16
ARG AGENT_WORKDIR=/root/agent
#获取jnlp
RUN curl --create-dirs -sSLo /usr/share/jenkins/slave.jar https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/${
VERSION}/remoting-${
VERSION}.jar \&& chmod 755 /usr/share/jenkins \&& chmod 644 /usr/share/jenkins/slave.jar
#安装软件
RUN yum -y install git libtool-ltdl java-1.8.0-openjdk
RUN rm -rf /var/cache/yum/x86_64/7/*ENV AGENT_WORKDIR=${
AGENT_WORKDIR}COPY node /usr/local/
COPY kubectl /usr/bin/kubectl
#提前从官网镜像中将命令拷贝出来
COPY jenkins-slave /usr/local/bin/jenkins-slave
#将自己的 .kube 文件拷贝到镜像中
COPY .kube /root/.kube
#定制hosts文件,因为centos的hosts放置在只读层,需要修改系统读取hosts的位置到/tmp/hosts文件
COPY hosts /tmp/hosts
RUN mkdir -p -- /lib-override && cp /usr/lib64/libnss_files.so.2 /lib-override
RUN sed -i 's:/etc/hosts:/tmp/hosts:g' /lib-override/libnss_files.so.2
ENV LD_LIBRARY_PATH /lib-override RUN mkdir /root/.jenkins && mkdir -p ${
AGENT_WORKDIR}
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/node/bin
RUN npm install -g yarn
WORKDIR /root
ENTRYPOINT ["jenkins-slave"]
制作镜像
docker build -t jenkins-slave:1.0 .
如果没有提前下载centos镜像,构建时间可能较长。
二、配置jenkins-master
- 打开 jenkins UI 界面依次点击
系统管理 –> 系统设置 –> 新增一个云(在界面最下方) –> Kubernetes
配置如下:
配置完成后点击保存
2.新建一个 pipline 任务
三、编写 pipline
这里由于各项目使用到的环境不同,这里只是简单做了个模板,大家可以在此模板的基础上修改为适合自己的 pipline,将此 pipline 放置到代码的根路径下
四、开始构建
返回到项目点击立即构建,可以看到 jenkins-slave 正在创建
查看构建日志,docker、kubectl命令可正常调用
至此,构建完成。