【KubeSphere】 devops 部署 jdk11以上项目 maven版本过低解决方案
前言
本人最近在学习K8s以及KubeSpere相关操作,涉及到devops部署项目,由于JDK8过于老旧你发任你发,我用java8
学习项目采用了JDK21+springboot3.3 后续就是一堆坑,挨个踩完,发现devops maven版本这里是个大坑
接下来是我的处理方式
本人较菜 ,仅处理解决方式,如有错误,请指出
1、下载官方提供的Dockerfile
https://github.com/kubesphere/devops-agent.git
2、修改dockerfile

替换为自己所要使用到的版本
这里提供我修改后的版本(jdk21+maven3.9.8)
FROM kubespheredev/builder-base:v3.2.2
ARG JDK_VERSION 1.8.0
ARG JDK_HOME /usr/lib/jvm/java-${JDK_VERSION}-openjdk
# java
ENV JAVA_VERSION $JDK_VERSION
RUN if [ "x${JAVA_VERSION}" = "x21" ]; then \
ARCH= && uArch="$(uname -m)" \
&& case "${uArch##*-}" in \
x86_64) ARCH='x64';; \
aarch64) ARCH='aarch64';; \
*) echo "unsupported architecture"; exit 1 ;; \
esac \
&& wget https://download.oracle.com/java/${JAVA_VERSION}/latest/jdk-${JAVA_VERSION}_linux-${ARCH}_bin.rpm \
&& rpm -ivh jdk-${JAVA_VERSION}_linux-${ARCH}_bin.rpm; \
else \
yum install -y java-${JAVA_VERSION}-openjdk-devel java-${JAVA_VERSION}-openjdk-devel.i686; \
fi
# maven
ENV MAVEN_VERSION 3.9.8
RUN curl -f -L https://archive.apache.org/dist/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -C /opt -xzv
ENV M2_HOME /opt/apache-maven-$MAVEN_VERSION
ENV JAVA_HOME $JDK_HOME
ENV maven.home $M2_HOME
ENV M2 $M2_HOME/bin
ENV PATH $M2:$PATH:JAVA_HOME/bin
# ant
ENV ANT_VERSION 1.10.7
RUN cd && \
wget -q https://archive.apache.org/dist/ant/binaries/apache-ant-${ANT_VERSION}-bin.tar.gz && \
tar -xzf apache-ant-${ANT_VERSION}-bin.tar.gz && \
mv apache-ant-${ANT_VERSION} /opt/ant && \
rm apache-ant-${ANT_VERSION}-bin.tar.gz
ENV ANT_HOME /opt/ant
ENV PATH ${PATH}:/opt/ant/bin
# Set JDK to be 32bit
COPY set_java $M2
RUN if [ "x${JAVA_VERSION}" = "x21" ]; then \
rm $M2/set_java; \
else \
$M2/set_java && rm $M2/set_java; \
fi
CMD ["mvn","-version"]
3、打包镜像,并推送给腾讯个人仓库
docker build --build-arg JDK_VERSION=21 -t builder-maven:v3.2.2-jdk21 .
我在这一步不会自己打上标签,后面手动打了一次标签,打完后记得看一下镜像信息
打标签,准备推送给腾讯仓库
docker tag builder-maven:v3.2.2-jdk21 ccr.ccs.tencentyun.com/xxx/builder-maven:v3.2.2-jdk21
开始推送
docker push ccr.ccs.tencentyun.com/xxx/builder-maven:v3.2.2-jdk21
登录腾讯仓库的命令此处省略,其他仓库流程相同
4、修改KubeSphere配置文件
使用admin账号登录平台,修改jenkins-casc-config中的jenkins_user.yaml部分

注意,这里面有两个YAML文件,我们要修改的是jenkins_user.yaml
搜索mavenjdk11
在下方增加同级mavenjdk21配置信息
- name: "mavenjdk21"
label: "jdk21 maven java"
inheritFrom: "maven"
containers:
- name: "maven"
image: "ccr.ccs.tencentyun.com/xxx/builder-maven:jdk21"

5、修改流水线配置
类型node
label jdk21

6、验证结果
pipeline {
agent {
node {
label 'jdk21'
}
}
stages {
stage('Print Maven and JDK version') {
agent none
steps {
container('maven') {
sh 'docker version'
sh ''' java -version
mvn -v
cd /opt
ls -a
cd /opt/apache-maven-3.9.8/
ls -a
cd conf
ls -a
pwd
cat settings.xml'''
}
}
}
}
}

附:个人在DockerHub上也推送了一份镜像,pull命令如下
docker pull xiaocaoandxiaoxi/builder-maven
知道你们懒 主打一个善解人意
记得修改配置文件下载地址
参考文章:
https://blog.csdn.net/puzi0315/article/details/132565324
https://blog.csdn.net/huangh0914/article/details/136363139
https://ask.kubesphere.io/forum/d/9047-kubesphere-devops-jdk17maven
转载请注明文章出处

浙公网安备 33010602011771号