devops基础---制作属于自己的jenkins-slave镜像-镜像文件制作

最近在部署CI/CD流程中,发现用官方的 jnlp 文件来做实验有点不太爽,因为自己的环境是基于centos的,而官方的 jnlp 基础镜像是基于debain系统来构建的。同时官方的 jnlp 文件只是基础镜像,只提供了 jnlp 连接 jenkins-master 的功能。在实际的企业项目中,因为不同的构建任务需要用到的环境不一,这就需要根据不同的环境构建不同的jnlp镜像。结果之前讲的之前如何写dockerfile文章,本文给出我的 Dockerfile ,大家可以跟据各自的不同需求做些相应的修改,来构建属于自己的jenkins-slave镜像。

devops基础---制作属于自己的jenkins-slave镜像

制作jenkins-slave镜像

cat Dockerfile
FROM centos:latest
MAINTAINER steven_xiao <workdsz@163.com>
USER root
RUN yum -y install wget sudo java-1.8.0-openjdk git ca-certificates curl netbase gnupg dirmngr bzr mercurial openssh-client procps
#获取jnlp
RUN curl --create-dirs -sSLo /usr/share/jenkins/slave.jar https://repo.jenkins-ci.org/public/org/jenkins-ci/main/remoting/3.9/remoting-3.9.jar \
&& chmod 755 /usr/share/jenkins \
&& chmod 644 /usr/share/jenkins/slave.jar
RUN curl --create-dirs -sSLo /usr/local/bin/jenkins-slave https://raw.githubusercontent.com/jenkinsci/docker-jnlp-slave/3.27-1/jenkins-slave \
&& chmod a+x /usr/local/bin/jenkins-slave
# 创建jenkins与system用户
RUN useradd --system --shell /bin/bash --create-home --home /home/jenkins jenkins
RUN echo "jenkins ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/jenkins
#安装maven包
ADD apache-maven-3.6.1-bin.tar.gz /usr/local/
RUN cd /usr/local && mv apache-maven-3.6.1 maven
#加nexus的配置文件到maven中
COPY settings.xml /usr/local/maven/conf/
#加kubect到jlnp中,以便调用kubernetes
COPY kubectl /usr/bin/kubectl
#输出自己定义的环境
ENV MAVEN_HOME /usr/local/maven
RUN mkdir -p /home/jenkins/.jenkins
VOLUME /home/jenkins/.jenkins
WORKDIR /home/jenkins
ENTRYPOINT ["jenkins-slave"]mgih

小结:

构建时,我们需要把 maven包,kubectl等包放到与dockerfile同一目录中。上面的dockerfile会从网上下载相关的包,有时候在构建的时候会比较慢的。

后面再介绍一种,构建直接下载所有的包,放在同一目录,省去从网上下载的时间。利于更加清楚整个构建的过程。

推荐阅读