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

Problem to configure perforce plugin and maven release plugin

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • release-plugin
    • None
    • unix (centos)
      jenkins 1.447
      perforce plugin 1.3.7
      jenkins maven release plugin 0.9.0

      Hi,

      I try to use jenkins maven release plugin on Jenkins with a perforce SCM.

      However, I have a weird error. In debug mode I see the following messages :

      [DEBUG] SCM path in pom: //depot/AirTravelServer/main/
      [DEBUG] Executing: /bin/sh -c p4 -p srvpar5p4p01:1992 where /home/www-data/.jenkins/jobs/ATS-TRUNK-RELEASE/workspace/pom.xml
      [DEBUG] p4 can not support a wide charset unless

      and the stacktrace :

      Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -2
      	at java.lang.String.substring(String.java:1937)
      	at org.apache.maven.scm.provider.perforce.command.PerforceWhereCommand.getDepotLocation(PerforceWhereCommand.java:117)
      	at org.apache.maven.scm.provider.perforce.command.PerforceWhereCommand.getDepotLocation(PerforceWhereCommand.java:61)
      	at org.apache.maven.scm.provider.perforce.PerforceScmProvider.getRepoPath(PerforceScmProvider.java:466)
      	at org.apache.maven.scm.provider.perforce.command.status.PerforceStatusCommand.executeStatusCommand(PerforceStatusCommand.java:57)
      	at org.apache.maven.scm.command.status.AbstractStatusCommand.executeCommand(AbstractStatusCommand.java:44)
      	at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)
      

      The problem is due to : "p4 can not support a wide charset unless"

      I've configured P4CHARSET to utf16le-bom and I've tried several different charsets for P4COMMANDCHARSET : winansi, utf8, none

      The problem exists only for maven release plugin. I don't have this error with mvn install.

      Do you know what is the right configuration to make it works ?

          [JENKINS-12877] Problem to configure perforce plugin and maven release plugin

          Rob Petti added a comment -

          This is unrelated to the perforce plugin, and in fact may be unrelated to Jenkins at all... It's looks purely like a maven error to me.

          Rob Petti added a comment - This is unrelated to the perforce plugin, and in fact may be unrelated to Jenkins at all... It's looks purely like a maven error to me.

          I have more time to investigate on that this week ^^

          So, the problem is that every P4 variables are not exported to the environment for post build actions.

          All variables declared in the perforce section are not exposed in the environment when the maven command is runned.
          So we end up with several errors due to P4CHARSET, P4CLIENT, P4USER not known.

          It fails even if I add a pre build step to set this variable through a shell script. I guess the pre build script is not runned on the same environnement and so my EXPORT commands are useless for post build actions.

          So the question is, is it possible for the jenkins perforce plugin to expose these variables to the build when maven is invoked ?

          Hugo Lassiège added a comment - I have more time to investigate on that this week ^^ So, the problem is that every P4 variables are not exported to the environment for post build actions. All variables declared in the perforce section are not exposed in the environment when the maven command is runned. So we end up with several errors due to P4CHARSET, P4CLIENT, P4USER not known. It fails even if I add a pre build step to set this variable through a shell script. I guess the pre build script is not runned on the same environnement and so my EXPORT commands are useless for post build actions. So the question is, is it possible for the jenkins perforce plugin to expose these variables to the build when maven is invoked ?

          I'm answering to my own question.

          There is a workaround to make it work.
          You have to use Parameterized build to set the environment : http://wiki.hudson-ci.org/display/HUDSON/Parameterized+Build

          That way, user will be asked for P4USER and P4PASSWORD when running manually a release with jenkins maven release plugin. And standard build will fire as usual.

          Hugo Lassiège added a comment - I'm answering to my own question. There is a workaround to make it work. You have to use Parameterized build to set the environment : http://wiki.hudson-ci.org/display/HUDSON/Parameterized+Build That way, user will be asked for P4USER and P4PASSWORD when running manually a release with jenkins maven release plugin. And standard build will fire as usual.

          Rob Petti added a comment -

          Unfortunately, there's no way to fix this from the side of the Perforce Plugin... The plugin already provides the environment variables through the usual buildEnvVars interface. It's up to the release plugin to actually use those variables.

          Rob Petti added a comment - Unfortunately, there's no way to fix this from the side of the Perforce Plugin... The plugin already provides the environment variables through the usual buildEnvVars interface. It's up to the release plugin to actually use those variables.

            petehayes Peter Hayes
            lassiege Hugo Lassiège
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: