Estoy usando Jenkins con un Jenkinsfile que ejecuta mis compilaciones dentro de un contenedor docker. Tengo una aplicación Java simple que me gustaría compilar e implementar en el artefacto usando el complemento Jenkins Artifactory.
Mi Jenkinsfile está debajo -
node { def server = Artifactory.server "my-artifactory" def rtMaven = Artifactory.newMavenBuild() stage("Prepare environment"){ docker.image('driv/docker-maven-java-oracle').inside { checkout scm stage("Artifactory configuration") { rtMaven.deployer releaseRepo:'libs-release-local', snapshotRepo:'libs-snapshot-local', server: server rtMaven.resolver releaseRepo:'libs-release', snapshotRepo:'libs-snapshot', server: server } stage("Maven build") { def buildInfo = rtMaven.run pom: 'pom.xml', goals: 'clean install' } } } }Sin embargo, cuando ejecuto compilaciones con el Jenkinsfile anterior, aparece el error:
java.lang.RuntimeException: Couldn't find maven installationSé que puedo agregar una línea a mi Jenkinsfile así:
rtMaven.tool = MAVEN_TOOL... que puedo usar para especificar una herramienta Jenkins preconfigurada para apuntar el complemento Artifactory a Maven. Sin embargo, me parece que dicha herramienta preconfigurada debería estar en la máquina Jenkins, o en un nodo de compilación, y no dentro de mi contenedor docker.
Entonces, ¿es posible apuntar el complemento Artifactory a una instalación experta dentro de mi contenedor docker?
Gracias.
Esto probablemente debería solucionarse en su complemento jenkins, pero como "Christopher Orr" sugirió mapear las variables del entorno en el nivel de etapa de la tubería a las mismas establecidas en el trabajo del contenedor.
Por ejemplo
stage('mystage') { environment { // If your using the official maven image, these are probably where it puts it MAVEN_HOME = '/usr/share/maven' JAVA_HOME= '/usr/local/openjdk-8' } steps { sh """ # confirm location of MAVEN_HOME and JAVA_HOME in container and set in environment directive printenv """ ... // call rtMavenRun()