【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
转载请注明文章出处

posted @ 2024-06-27 15:45  青山揽梦丶  阅读(107)  评论(0)    收藏  举报