一、制作镜像

  • Jenkins-Master在构建Job的时候,Kubernetes会创建Jenkins-Slave的Pod来完成 Job的构建
  • 我们选择运行Jenkins-Slave的镜像为官方推荐镜像:jenkins/jnlp-slave:latest,但是这个镜像里面并没有Maven 环境,为了方便使用,我们需要自定义一个新的镜像

点击这个下载maven和settings.xml

[root@master01 5]# ll javaAll.tar.gz
-rw-r--r-- 1 root root 8495585 Dec 24 19:53 javaAll.tar.gz
[root@master01 5]# tar xf javaAll.tar.gz
[root@master01 5]# cd javadockerfile
[root@master01 5]# ll javadockerfile/
total 8316
-rw-r--r-- 1 root root 8491533 Jul  3  2020 apache-maven-3.3.9-bin.tar.gz
-rw-r--r-- 1 root root     538 Apr 13  2023 Dockerfile
-rw-r--r-- 1 root root     505 Apr 14  2023 ingress.yaml
-rw-r--r-- 1 root root   10785 Apr 13  2023 settings.xml

Dockerfile文件内容如下:

[root@master01 javadockerfile]# vim Dockerfile
#FROM jenkins/jnlp-slave:4.13.3-1-jdk11
#FROM registry.cn-hangzhou.aliyuncs.com/abroad_images/jnlp-slave:4.13.3-1-jdk11
#FROM registry.cn-hangzhou.aliyuncs.com/abroad_images/inbound-agent:latest-jdk17
#FROM registry.cn-hangzhou.aliyuncs.com/abroad_images/inbound-agent:latest-jdk21
#FROM registry.cn-hangzhou.aliyuncs.com/abroad_images/inbound-agent:latest
FROM registry.cn-hangzhou.aliyuncs.com/abroad_images/inbound-agent:latest-jdk17
#FROM registry.cn-hangzhou.aliyuncs.com/github_images1024/inbound-agent:3107.v665000b_51092-15-jdk17

MAINTAINER ZQ

# 切换到 root 账户进行操作
USER root

# 安装 maven
COPY apache-maven-3.3.9-bin.tar.gz .

RUN tar -zxf apache-maven-3.3.9-bin.tar.gz && \
    mv apache-maven-3.3.9 /usr/local && \
    rm -f apache-maven-3.3.9-bin.tar.gz && \
    ln -s /usr/local/apache-maven-3.3.9/bin/mvn /usr/bin/mvn && \
    ln -s /usr/local/apache-maven-3.3.9 /usr/local/apache-maven && \
    mkdir -p /usr/local/apache-maven/repo

COPY settings.xml /usr/local/apache-maven/conf/settings.xml

USER jenkins

构建镜像

[root@master01 javadockerfile]# docker build -t jenkins-slave-maven:v1 .

上传harbor仓库(公共镜像全部放在/library/下)

[root@master01 javadockerfile]# docker tag jenkins-slave-maven:v1  harbor.zhang-qing.com/library/jenkins-slave-maven::v1
[root@master01 javadockerfile]# docker push harbor.zhang-qing.com/library/jenkins-slave-maven:v1

另外,在编译镜像时候采用了Docker in Docker模式,还需要镜像:

[root@master01 javadockerfile]# docker pull registry.cn-hangzhou.aliyuncs.com/github_images1024/docker:stable
[root@master01 javadockerfile]# docker tag registry.cn-hangzhou.aliyuncs.com/github_images1024/docker:stable harbor.zhang-qing.com/library/docker:stable
[root@master01 javadockerfile]# docker push harbor.zhang-qing.com/library/docker:stable

遇到的问题一:

问题原因:Agent版本过低

SEVERE: Agent version 3107.v665000b_51092 or newer is required.
java.io.IOException: Agent version 3107.v665000b_51092 or newer is required.

问题解决:采用新版本

[root@master01 javadockerfile]# vim Dockerfile
#FROM jenkins/jnlp-slave:4.13.3-1-jdk11
#FROM registry.cn-hangzhou.aliyuncs.com/abroad_images/jnlp-slave:4.13.3-1-jdk11
FROM registry.cn-hangzhou.aliyuncs.com/abroad_images/inbound-agent:latest-jdk17

MAINTAINER ZQ

# 切换到 root 账户进行操作
USER root

# 安装 maven
COPY apache-maven-3.3.9-bin.tar.gz .

RUN tar -zxf apache-maven-3.3.9-bin.tar.gz && \
    mv apache-maven-3.3.9 /usr/local && \
    rm -f apache-maven-3.3.9-bin.tar.gz && \
    ln -s /usr/local/apache-maven-3.3.9/bin/mvn /usr/bin/mvn && \
    ln -s /usr/local/apache-maven-3.3.9 /usr/local/apache-maven && \
    mkdir -p /usr/local/apache-maven/repo

COPY settings.xml /usr/local/apache-maven/conf/settings.xml

USER jenkins

二、jenkins节点启动docker

查看jenkins的pod放在哪个节点,观察到jenkins的pod在master02节点启动

[root@master01 ~]# kgp -n devops -owide | grep jenkins
jenkins-84b9564b8b-72j6w      1/1     Running   1 (80m ago)     97m     172.20.59.225    master02   <none>           <none>

master02节点启动Docker

[root@master02 ~]#systemctl restart docker

三、上传inbound-agent镜像到Harbor

#登录Harbor
[root@master01 ~]# docker login -uadmin harbor.zhang-qing.com
password: Harbor12345

[root@master01 ~]#docker pull jenkins/inbound-agent:3299.v0d0d06908537-1

[root@master01 ~]#docker tag jenkins/inbound-agent:3299.v0d0d06908537-1 harbor.zhang-qing.com/library/inbound-agent:3299.v0d0d06908537-1

[root@master01 ~]#docker push harbor.zhang-qing.com/library/inbound-agent:3299.v0d0d06908537-1