创建部署问题时,请参考下面模板,你提供的信息越多,越容易及时获得解答。如果未按模板创建问题,管理员有权关闭问题。
确保帖子格式清晰易读,用 markdown code block 语法格式化代码块。
你只花一分钟创建的问题,不能指望别人花上半个小时给你解答。

操作系统信息
例如:虚拟机/物理机,Centos7.5/Ubuntu18.04,4C/8G

Kubernetes版本信息
kubectl version 命令执行结果贴在下方

Client Version: version.Info{Major:“1”, Minor:“24”, GitVersion:“v1.24.2”, GitCommit:“f66044f4361b9f1f96f0053dd46cb7dce5e990a8”, GitTreeState:“clean”, BuildDate:“2022-06-15T14:22:29Z”, GoVersion:“go1.18.3”, Compiler:“gc”, Platform:“linux/amd64”}

Kustomize Version: v4.5.4

Server Version: version.Info{Major:“1”, Minor:“24”, GitVersion:“v1.24.2”, GitCommit:“f66044f4361b9f1f96f0053dd46cb7dce5e990a8”, GitTreeState:“clean”, BuildDate:“2022-06-15T14:15:38Z”, GoVersion:“go1.18.3”, Compiler:“gc”, Platform:“linux/amd64”}

容器运行时
docker version / crictl version / nerdctl version 结果贴在下方

Version:  0.1.0

RuntimeName:  containerd

RuntimeVersion:  1.6.8

RuntimeApiVersion:  v1

KubeSphere版本信息
v3.3.1

有使用jdk17编译代码并在非docker运行时下构建镜像的文档吗?

6 天 后

chilianyi 我想使用其他开源的jdk,没有生效。

FROM kubespheredev/builder-base:v3.3.1-podman

ARG JDK_VERSION 17
ARG JDK_HOME /usr/local/jdk17

# java
ENV JAVA_VERSION $JDK_VERSION

COPY jdk-17.0.6+10 /usr/local/jdk17
# maven
ENV MAVEN_VERSION 3.5.3
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


CMD ["mvn","-version"]

    masterYI 您说的没有生效,是说 build 好的 image,更新到 casc 那个 configmap 后,下次运行流水线时,没有 使用这个新的 image 吗。

    是更新的 casc 这个 configmap , 下面 jenkins-user.yaml 对应的配置吧。

      chilianyi 是的,运行java -version,还是jdk1.8

      不清楚是不是java环境变量设置的有问题。我用下面这种方式是可以的

      FROM eclipse-temurin:17.0.6_10-jdk-centos7
      COPY apache-maven-3.8.6 /usr/local/maven
      ENV PATH /usr/local/maven/bin:$PATH

      chilianyi

      使用下面的Dockerfile构建的镜像,storage.conf和containers.conf是复制的https://github.com/kubesphere/devops-agent/tree/master/base,在jenkins_user.yaml新增这个自定义镜像,能够正确的使用jdk17,但是运行podman命令去构建镜像的时候,报错了。报错日志也贴在下面

      pipeline {
        agent {
          node {
            label 'jdk17'
          }
      
        }
        stages {
          stage('clone code') {
            agent none
            steps {
              container('maven') {
                git(url: '***', credentialsId: 'coding-code-test', branch: 'test', changelog: true, poll: false)
              }
      
            }
          }
      
          stage('build api') {
            agent none
            steps {
              container('maven') {
                sh 'mvn clean deploy settings.xml -Dmaven.test.skip=true'
              }
      
            }
          }
      
          stage('build service & docker') {
            agent none
            steps {
              container('maven') {
                sh 'mvn package -Dmaven.test.skip=true -gs settings.xml'
                sh 'podman build -f Dockerfile -t $DOCKER_REGISTRY/$APP_NAME:$IMAGE_VERSION .'
                withCredentials([usernamePassword(credentialsId : 'coding-docker-test' ,passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,)]) {
                  sh 'echo "$DOCKER_PASSWORD" | podman login $DOCKER_REGISTRY -u "$DOCKER_USERNAME" --password-stdin'
                  sh 'podman push $DOCKER_REGISTRY/$APP_NAME:$IMAGE_VERSION'
                }
      
              }
      
            }
          }
      
        }
        environment {
          DOCKER_REGISTRY = '***'
          APP_NAME = '***'
          IMAGE_VERSION = new Date().format('yyyyMMddHHmm')
        }
      }
      FROM eclipse-temurin:17.0.6_10-jdk-centos7
      USER root
      COPY apache-maven-3.8.6 /usr/local/maven
      ENV PATH /usr/local/maven/bin:$PATH
      
      # Install podman
      RUN curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/devel:kubic:libcontainers:stable.repo && \
          yum -y install podman fuse-overlayfs && \
          ln -s /usr/bin/podman /usr/bin/docker && \
          yum -y clean all --enablerepo='*'
      
      COPY storage.conf /etc/containers/storage.conf
      COPY containers.conf /etc/containers/containers.conf
      
      VOLUME /var/lib/containers
      
      + podman build -f Dockerfile -t ****:202302130512 .
      time="2023-02-13T05:14:14Z" level=error msg="unable to write system event: \"write unixgram @00054->/run/systemd/journal/socket: sendmsg: no such file or directory\""
      STEP 1: FROM eclipse-temurin:17.0.4.1_1-jre-alpine
      Getting image source signatures
      Copying blob sha256:4e5835cc7e6eb64b728c9694dd72d8aede877af0a2ec44f981847853af9abbf5
      Copying blob sha256:213ec9aee27d8be045c6a92b7eac22c9a64b44558193775a1a7f626352392b49
      Copying blob sha256:35243bad18387ab20b70d4f0ca03c67b2843708e91c260b1730b67519fa8ee36
      Copying blob sha256:e64c7e9aaa0e6ef3e507969f4b47036bc0ee0b0cc291a7233de5f6162e5b3fe6
      Copying config sha256:86bbc34bc5d7fbcf99c4983b9123f9d279841fab1e39b61c528b65627ba1a48e
      Writing manifest to image destination
      Storing signatures
      STEP 2: COPY *****/target/*.jar app.jar
      231670a05a69742a410685851c4ca1f795561d5e91f846850a2d73e623bd84a7
      STEP 3: RUN chmod a+rwx /var
      error running container: error creating container for [/bin/sh -c chmod a+rwx /var]: time="2023-02-13T05:14:44Z" level=error msg="systemd cgroup flag passed, but systemd support for managing cgroups is not available"
      : exit status 1
      Error: error building at STEP "RUN chmod a+rwx /var": error while running runtime: exit status 1
      script returned exit code 125