Cannot mount local config for maven in docker multi-stage builds

Viewed 30

I using Jenkins with Kubernetes slave. (Kubernetes plugin)

I want to build docker multi-stage. In maven build state I want to use local repository. (config in settings.xml)

I already created configmap on K8S and mounted while running build job.

agent {
kubernetes {
  yaml '''
    apiVersion: v1
    kind: Pod
    spec:
      volumes:
      - name: docker-socket
        emptyDir: {}
      - configMap:
          defaultMode: 420
          name: nexus-xml-test
        name: config-vol
      containers:
      - name: docker-pod
        image: docker:19.03.1
        command:
        - cat
        tty: true
        volumeMounts:
        - name: docker-socket
          mountPath: /var/run
        - mountPath: /root/.m2
          name: config-vol
      - name: docker-daemon
        image: docker:19.03.1-dind
        securityContext:
          privileged: true
        volumeMounts:
        - name: docker-socket
          mountPath: /var/run
    '''
}
}

And I Already verify that settings.xml is already mounted.

2022-09-13 17:27:54  + cd /root/.m2
2022-09-13 17:27:54  + ls
2022-09-13 17:27:54  settings.xml

In dockerfile. I added this command.

RUN mvn -s /root/.m2/settings.xml

But when i build. It cannot find settings.xml

2022-09-13 17:45:48  Step 2/10 : RUN mvn -s /root/.m2/settings.xml
2022-09-13 17:45:51   ---> Running in e779f9fcf9b6
2022-09-13 17:45:52  [ERROR] Error executing Maven.
2022-09-13 17:45:52  [ERROR] The specified user settings file does not exist: /root/.m2/settings.xml
2022-09-13 17:45:52  The command '/bin/sh -c mvn -s /root/.m2/settings.xml' returned a non-zero code: 1

Please help suggest.

0 Answers
Related