Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-45335

mavenOpts attribute doesn't resolve credentials variables

      This doesn't work:

                withCredentials([string(credentialsId: 'mvnrepo-keystore-pass', variable: 'JENKINSPASS')]) {
                    withMaven( 
                      mavenOpts: '-Djavax.net.ssl.keyStore=effaced.p12    -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=${JENKINSPASS}',
                      mavenSettingsConfig: 'my-maven-settings') {
                      sh 'mvn help:effective-settings -U'
                  }
                }  

      This does work:

                withCredentials([string(credentialsId: 'mvnrepo-keystore-pass', variable: 'JENKINSPASS')]) {
                    withMaven( 
                      mavenSettingsConfig: 'my-maven-settings') {
                      sh 'MAVEN_OPTS="-Djavax.net.ssl.keyStore=effaced.p12  -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=${JENKINSPASS}" mvn help:effective-settings -U'
                  }
                }  

          [JENKINS-45335] mavenOpts attribute doesn't resolve credentials variables

          Jakub Bochenski created issue -
          Jakub Bochenski made changes -
          Description Original: This doesn't work:
          {code} withCredentials([string(credentialsId: 'mvnrepo-keystore-pass', variable: 'JENKINSPASS')]) {
                        withMaven(
                          mavenOpts: '-Djavax.net.ssl.keyStore=effaced.p12 -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=${JENKINSPASS}',
                          mavenSettingsConfig: 'protect-maven-settings') {
                          sh 'mvn help:effective-settings -U'
                      }
                    } {code}

          This *does* work:
          {code} withCredentials([string(credentialsId: 'mvnrepo-keystore-pass', variable: 'JENKINSPASS')]) {
                        withMaven(
                          mavenSettingsConfig: 'protect-maven-settings') {
                          sh 'MAVEN_OPTS="-Djavax.net.ssl.keyStore=effaced.p12 -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=${JENKINSPASS}" mvn help:effective-settings -U'
                      }
                    } {code}
          New: This doesn't work:
          {code} withCredentials([string(credentialsId: 'mvnrepo-keystore-pass', variable: 'JENKINSPASS')]) {
                        withMaven(
                          mavenOpts: '-Djavax.net.ssl.keyStore=effaced.p12 -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=${JENKINSPASS}',
                          mavenSettingsConfig: 'my-maven-settings') {
                          sh 'mvn help:effective-settings -U'
                      }
                    } {code}

          This *does* work:
          {code} withCredentials([string(credentialsId: 'mvnrepo-keystore-pass', variable: 'JENKINSPASS')]) {
                        withMaven(
                          mavenSettingsConfig: 'my-maven-settings') {
                          sh 'MAVEN_OPTS="-Djavax.net.ssl.keyStore=effaced.p12 -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=${JENKINSPASS}" mvn help:effective-settings -U'
                      }
                    } {code}
          Jakub Bochenski made changes -
          Environment New: maven-pipeline-plugin 2.5

          Another thing that works:

                    withCredentials([string(credentialsId: 'mvnrepo-keystore-pass', variable: 'JENKINSPASS')]) {              
                        withMaven( 
                          mavenSettingsConfig: 'my-maven-settings') {
                          env['MAVEN_OPTS']="-Djavax.net.ssl.keyStore=effaced.p12  -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=${env.JENKINSPASS}"
                          sh 'mvn help:effective-settings -U'
                      }
                    }   

          Jakub Bochenski added a comment - Another thing that works: withCredentials([string(credentialsId: 'mvnrepo-keystore-pass' , variable: 'JENKINSPASS' )]) { withMaven( mavenSettingsConfig: 'my-maven-settings' ) { env[ 'MAVEN_OPTS' ]= "-Djavax.net.ssl.keyStore=effaced.p12 -Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.keyStorePassword=${env.JENKINSPASS}" sh 'mvn help:effective-settings -U' } }
          Jakub Bochenski made changes -
          Component/s New: credentials-plugin [ 16523 ]
          Jakub Bochenski made changes -
          Labels New: Pipeline pipeline-maven
          Alvaro Lobato made changes -
          Assignee Original: Alvaro Lobato [ alobato ]

          Cyrille Le Clerc added a comment - - edited

          jbochenski we are supposed to expand the environment variables for MAVEN_OPTS (see code fragment below), I have to check, the syntax is likely be based on "${env.MY_KEYSTORE_PASSWORD}'" instead of "${MY_KEYSTORE_PASSWORD}'":

          withMaven(...
             mavenOpts: '-Djavax.net.ssl.keyStorePassword=${env.MY_KEYSTORE_PASSWORD}')
          
             sh "mvn package"
          }
          

          jbochenski are you able to do a quick check?

          Code fragment:

          https://github.com/jenkinsci/pipeline-maven-plugin/blob/pipeline-maven-parent-2.5.1/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepExecution.java#L280

          String mavenOpts = envOverride.expand(env.expand(step.getMavenOpts()));
          

          Cyrille Le Clerc added a comment - - edited jbochenski we are supposed to expand the environment variables for MAVEN_OPTS (see code fragment below), I have to check, the syntax is likely be based on "${env.MY_KEYSTORE_PASSWORD}'" instead of "${MY_KEYSTORE_PASSWORD}'": withMaven(... mavenOpts: '-Djavax.net.ssl.keyStorePassword=${env.MY_KEYSTORE_PASSWORD}' ) sh "mvn package " } jbochenski are you able to do a quick check? Code fragment: https://github.com/jenkinsci/pipeline-maven-plugin/blob/pipeline-maven-parent-2.5.1/jenkins-plugin/src/main/java/org/jenkinsci/plugins/pipeline/maven/WithMavenStepExecution.java#L280 String mavenOpts = envOverride.expand(env.expand(step.getMavenOpts()));
          Stephen Connolly made changes -
          Component/s Original: credentials-plugin [ 16523 ]

          jbochenski friendly ping

          Cyrille Le Clerc added a comment - jbochenski friendly ping

            Unassigned Unassigned
            jbochenski Jakub Bochenski
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: