• DevOps
  • KubeSphere DevOps maven jdk版本如何升级或者更换?

kubesphere3.1,使用devops,编译项目发现maven使用的jdk为1.8版本,目前很多项目都使用到了9或者11,导致无法编译。查看了社区和官方文档,并没有清晰的文档说明如果修改jdk版本。

目前社区有两种方案来修改jdk版本:
第一种:修改jinkens配置里面的podTemplate,并更新jinkens-cas配置。
第二种:在devops的pipeline手动加入podTemplate设置。
以上两种方式,都只有小部分的文档,并没有完整的示例或者demo。对于新手来说有点雾里看花,无处下手的感觉。希望哪位大神,能给一份完整点的方案。谢谢🙏

    @johnniang @Rick 请帮忙在论坛先出一个升级 maven jdk 的教程吧,然后由 SIG-Docs 补充到官方文档中。

      Rick 对于@klaus-pd 的问题, 如果是使用 Oracle JDK,可以参考教程,自行制作镜像。社区版本一般集成OpenJDK。

      • Rick 回复了此帖

        Rick jdk是oracle还是开源没有关系,一份完整的升级maven jdk的教程能不能给一份

        maven更新到3.6步骤:
        1、打包新的maven
        2、根据打包的镜像,在kubesphere-devops-system命名空间下去修改configmap的jenkins-casc-config里对应的podTemplate
        3、在jenkins->configuration as code重载加载已有配置

        配置文件如下所示:
        1、Dockerfile

        FROM kubesphere/builder-base:v2.1.1
        
        # java
        RUN yum install -y  java-11-openjdk.x86_64 \
            java-11-openjdk-devel.x86_64
        
        # maven
        ENV MAVEN_VERSION 3.6.3
        RUN curl -f -L curl -f -L https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -C /opt -xzv
        COPY settings.xml /opt/apache-maven-$MAVEN_VERSION/.m2/settings.xml
        COPY settings.xml /opt/apache-maven-$MAVEN_VERSION/conf/settings.xml
        ENV M2_HOME /opt/apache-maven-$MAVEN_VERSION
        ENV maven.home $M2_HOME
        ENV M2 $M2_HOME/bin
        ENV PATH $M2:$PATH
        
        # ant
        #https://downloads.apache.org/ant/binaries/apache-ant-1.10.9-bin.tar.gz
        ENV ANT_VERSION 1.10.9
        RUN cd && \
            wget -q http://downloads.apache.org/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 $M2/set_java && rm $M2/set_java
        CMD ["mvn","-version"]

        2、settings.xml

        <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
        <!-- <localRepository>/Users/jiaheng/.m2/repository</localRepository> -->
            <servers>
             <server>
                 <id>nexus-releases</id>
                <username>admin</username>
                <password>xxxxxxxxx</password>
             </server>
            <server>
                <id>nexus-snapshots</id>
                <username>admin</username>
                <password>xxxxxxxxxx</password>
            </server>
            <!--<server>-->
            <!--<id>nexus-thirdparty</id>-->
            <!--<username>admin</username>-->
            <!--<password>xxxxxxxx</password>-->     <!--</server>-->
            </servers>
            <mirrors>
                <mirror>
                    <id>dao</id>
                    <name>dao maven</name>
                    <url>http://nexus.xxxxxx.int/repository/maven-public/</url>
                    <mirrorOf>*</mirrorOf>
                </mirror>
            </mirrors>
            <profiles>
                <profile>
                    <id>nexus</id>
                    <repositories>
                        <repository>
                            <id>nexus</id>
                            <url>http://nexus.xxxxxx.int/repository/maven-public/</url>
                            <releases>
                                <enabled>true</enabled>
                                <checksumPolicy>warn</checksumPolicy>
                                <updatePolicy>always</updatePolicy>
                            </releases>
                            <snapshots>
                            <enabled>true</enabled>
                                <checksumPolicy>warn</checksumPolicy>
                                <updatePolicy>always</updatePolicy>
                            </snapshots>
                        </repository>
                    </repositories>
                    <pluginRepositories>
                        <pluginRepository>
                            <id>nexus</id>
                            <url>http://nexus.xxxxxx.int/repository/maven-public/</url>
                            <releases>
                                <enabled>true</enabled>
                            </releases>
                            <snapshots>
                                <enabled>true</enabled>
                            </snapshots>
                        </pluginRepository>
                    </pluginRepositories>
                </profile>
            </profiles>
            <activeProfiles>
                <activeProfile>nexus</activeProfile>
            </activeProfiles>
        </settings>

        3、set_java (optional)

        #!/bin/bash
        # credit https://github.com/jerboaa from https://github.com/fabric8io-images/maven-builder/blob/d81dedbc298dee7e071ac2bc1e0050ae7ee1e5aa/set_java
        
        ARCH=$(uname -m)
        echo $ARCH
        
        if [[ ${ARCH} == 'x86_64' ]]; then
          JAVA_32=$(alternatives --display java | grep family | grep i386 | cut -d' ' -f1)
          alternatives --set java ${JAVA_32}
          JAVAC_32=$(alternatives --display javac | grep family | grep i386 | cut -d' ' -f1)
          # Maven actually uses javac, not java
          alternatives --set javac ${JAVAC_32}
          exit $?
        fi

        _

        3 年 后

        支持Podman+JDK17+Maven3.9.7的dockerfile文件:

        # 使用基础镜像
        FROM registry.cn-beijing.aliyuncs.com/kubesphereio/builder-base:v3.2.2-podman

        # 设置环境变量
        ENV MAVEN_VERSION=3.9.7
        ENV PATH_NAME=jdk-17.0.13+11
        ENV TZ=Asia/Shanghai

        # 设置时区
        RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

        # 移除现有的 JDK 8
        RUN if [ -d /usr/lib/jvm ]; then \
        rm -rf /usr/lib/jvm/*; \
        fi

        # 下载并安装 OpenJDK 17
        RUN mkdir -p /usr/lib/jvm && \
        curl -f -L -o /tmp/$PATH_NAME.tar.gz https://mirrors.tuna.tsinghua.edu.cn/Adoptium/17/jdk/x64/linux/OpenJDK17U-jdk_x64_linux_hotspot_17.0.13_11.tar.gz && \
        tar -xzf /tmp/$PATH_NAME.tar.gz -C /usr/lib/jvm && \
        rm /tmp/$PATH_NAME.tar.gz

        # 设置 Java 环境变量
        ENV JAVA_HOME /usr/lib/jvm/$PATH_NAME
        ENV PATH $JAVA_HOME/bin:$PATH

        # 验证 Java 安装
        RUN java -version

        # 安装 Maven
        RUN curl -f -L https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -C /opt -xzv
        ENV MAVEN_HOME=/opt/apache-maven-$MAVEN_VERSION
        ENV PATH $MAVEN_HOME/bin:$PATH

        # 验证 Maven 安装
        RUN mvn -v

        # 设置默认命令
        CMD [“mvn”]

        6 个月 后

        `# 使用基础镜像
        FROM registry.cn-beijing.aliyuncs.com/kubesphereio/builder-base:v3.2.2-podman

        设置环境变量

        ENV MAVEN_VERSION=3.9.7
        ENV PATH_NAME=jdk-17.0.15
        ENV TZ=Asia/Shanghai

        设置时区

        RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

        移除现有的 JDK 8

        RUN if [ -d /usr/lib/jvm ]; then \
        rm -rf /usr/lib/jvm/*; \
        fi

        下载并安装 OpenJDK 17

        RUN mkdir -p /usr/lib/jvm \
        && curl -f -L -o /tmp/jdk17.tar.gz https://mirrors.tuna.tsinghua.edu.cn/Adoptium/17/jdk/x64/linux/OpenJDK17U-jdk_x64_linux_hotspot_17.0.15_6.tar.gz \
        && tar -xzf /tmp/jdk17.tar.gz -C /usr/lib/jvm \
        && mv /usr/lib/jvm/jdk-17.0.15+6 /usr/lib/jvm/jdk-17 \
        && rm /tmp/jdk17.tar.gz

        设置 Java 环境变量

        ENV JAVA_HOME=/usr/lib/jvm/jdk-17
        ENV PATH=${JAVA_HOME}/bin:${PATH}

        验证 Java 安装

        RUN ls -l /usr/lib/jvm/jdk-17/bin/java
        RUN java -version

        安装 Maven

        RUN curl -f -L https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -C /opt -xzv
        ENV MAVEN_HOME=/opt/apache-maven-$MAVEN_VERSION
        ENV PATH=${MAVEN_HOME}/bin:${PATH}

        验证 Maven 安装

        RUN mvn -v

        设置默认命令

        CMD [“mvn”]`

        试下不知道能用不