-
Bug
-
Resolution: Unresolved
-
Minor
-
Jenkins 2.319.2
Artifactory plugin 3.17.0
Kubernetes plugin 3651.v908e7db_10d06
The pipeline step rtMavenRun does not recognize then environment variables JAVA_HOME and MAVEN_HOME in the selected container when the executor is running in a Kubernetes pod with multiple containers and the selected container isn't the JNLP container.
Couldn't find Maven home at /usr/share/maven on agent JNLP4-connect connection from 192.168.29.177/192.168.29.177:48396. This could be because this build is running inside a Docker container.
When the variable isn't set in the JNLP container but just in the maven container then the step rtMavenRun fail.
java.lang.RuntimeException: Couldn't find maven installation at org.jfrog.hudson.maven3.Maven3Builder.getMavenHome(Maven3Builder.java:234) at org.jfrog.hudson.maven3.Maven3Builder.perform(Maven3Builder.java:109) at org.jfrog.hudson.pipeline.common.executors.MavenExecutor.execute(MavenExecutor.java:72) at org.jfrog.hudson.pipeline.declarative.steps.maven.MavenStep$Execution.runStep(MavenStep.java:106) at org.jfrog.hudson.pipeline.declarative.steps.maven.MavenStep$Execution.runStep(MavenStep.java:91) at org.jfrog.hudson.pipeline.ArtifactorySynchronousNonBlockingStepExecution.run(ArtifactorySynchronousNonBlockingStepExecution.java:55) at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.lang.Thread.run(Thread.java:829)
The pod is defined outside of the Jenkins file
apiVersion: v1 kind: Pod spec: serviceAccountName: jenkins securityContext: runAsUser: 82046 activeDeadlineSeconds: 1800 containers: - name: jnlp env: - name: JAVA_HOME value: "/usr/lib/jvm/java-11-openjdk-11.0.15.0.9-2.el8_2.x86_64" - name: MAVEN_HOME value: "/usr/share/maven" image: "image-registry.openshift-image-registry.svc:5000/openshift/jenkins-agent-base:latest" resources: limits: cpu: 300m memory: 500Mi requests: cpu: 45m memory: 250Mi - name: maven env: - name: MAVEN_HOME value: "/usr/share/maven" image: "image-registry.openshift-image-registry.svc:5000/ci-mdm-ci/jenkins-maven-agent:latest" command: - cat tty: true resources: limits: cpu: 700m memory: 1500Mi requests: cpu: 80m memory: 750Mi volumeMounts: - mountPath: "/home/jenkins/.m2/repository" name: "maven" readOnly: false - mountPath: "/home/jenkins/.sonar" name: "sonar" readOnly: false - mountPath: "/home/jenkins/.m2" name: "maven-settings"
Jenkinsfile
pipeline { agent { kubernetes { yamlFile 'pod.yaml' } } stages { stage('Maven Build') { steps { container('maven') { rtServer (id: 'artifactory', url: getArtifactoryURL()) rtMavenResolver(id: 'resolver', serverId: 'artifactory', releaseRepo: 'libs-release', snapshotRepo: 'libs-snapshot') rtMavenRun(pom: 'pom.xml', goals: clean install, resolverId: 'resolver') } } } } }