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

Parameters are not replaced in the "Stream Codeline" field

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Major Major
    • p4-plugin
    • Jenkins ver. 2.169

      I can not use variables in Stream Codeline for Pipeline projects. The variable is not replaced with it's correct value.

       

      hudson.AbortException: Error in client specification.
      Error detected at line 18.
      Stream '//User/' is not the correct format of '//depotname/string'	at org.jenkinsci.plugins.p4.client.ClientHelper.clientLogin(ClientHelper.java:167)
      	at org.jenkinsci.plugins.p4.client.TempClientHelper.<init>(TempClientHelper.java:40)
      	at org.jenkinsci.plugins.p4.scm.P4SCMFileSystem.<init>(P4SCMFileSystem.java:26)
      	at org.jenkinsci.plugins.p4.scm.P4SCMFileSystem$BuilderImpl.build(P4SCMFileSystem.java:77)
      Caused: java.io.IOException
      	at org.jenkinsci.plugins.p4.scm.P4SCMFileSystem$BuilderImpl.build(P4SCMFileSystem.java:79)
      	at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:198)
      	at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:174)
      	at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:108)
      	at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:67)
      	at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:293)
      	at hudson.model.ResourceController.execute(ResourceController.java:97)
      	at hudson.model.Executor.run(Executor.java:429)
      Finished: FAILURE
      

          [JENKINS-56775] Parameters are not replaced in the "Stream Codeline" field

          Karl Wirth added a comment -

          Hi dhoerner - Thanks again. I was easily able to reproduce this so will pass to the developers.

           

          A couple of notes (that you may already know)

          • Parameterized builds probably will not work correctly with polling. We rely on known workspace specs to work out what needs to be built.
          • Please include your parameter in the workspace name. For example jenkins-${NODE_NAME}${JOB_NAME}${EXECUTOR_NUMBER}-${PatchNumber}. Again this will help with changelist calculation for the build and the problems of moving workspaces between streams by an automated system.

           

          Reproduction steps:

          1. Create a pipeline job.
          2. Choose 'This project is parameterized'.
          3. Create a 'String' parameter with name 'PatchNumber' and a default value of a known stream (for example 'main' for '//streams/main').
          4. Under 'Pipeline' choose 'Pipeline script from SCM'.
          5. Under Workspace behavior 'Streams'.
          6. Set 'Stream Codeline' to '//streams/${PatchNumber}.
          7. Save.
          8. Choose 'Build with Parameters'.
          9. Error above seen:
          Started by user unknown or anonymous
          hudson.AbortException: Error in client specification.
          Error detected at line 18.
          Stream '//streams/' must begin with '//'.	at org.jenkinsci.plugins.p4.client.ClientHelper.clientLogin(ClientHelper.java:167)
          	at org.jenkinsci.plugins.p4.client.TempClientHelper.<init>(TempClientHelper.java:40)
          	at org.jenkinsci.plugins.p4.scm.P4SCMFileSystem.<init>(P4SCMFileSystem.java:26)
          	at org.jenkinsci.plugins.p4.scm.P4SCMFileSystem$BuilderImpl.build(P4SCMFileSystem.java:77)
          Caused: java.io.IOException
          	at org.jenkinsci.plugins.p4.scm.P4SCMFileSystem$BuilderImpl.build(P4SCMFileSystem.java:79)
          	at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:198)
          	at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:174)
          	at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:108)
          	at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:67)
          	at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:303)
          	at hudson.model.ResourceController.execute(ResourceController.java:97)
          	at hudson.model.Executor.run(Executor.java:429)
          Finished: FAILURE
          

          Karl Wirth added a comment - Hi dhoerner - Thanks again. I was easily able to reproduce this so will pass to the developers.   A couple of notes (that you may already know) Parameterized builds probably will not work correctly with polling. We rely on known workspace specs to work out what needs to be built. Please include your parameter in the workspace name. For example jenkins-${NODE_NAME} ${JOB_NAME} ${EXECUTOR_NUMBER}-${PatchNumber}. Again this will help with changelist calculation for the build and the problems of moving workspaces between streams by an automated system.   Reproduction steps: Create a pipeline job. Choose 'This project is parameterized'. Create a 'String' parameter with name 'PatchNumber' and a default value of a known stream (for example 'main' for '//streams/main'). Under 'Pipeline' choose 'Pipeline script from SCM'. Under Workspace behavior 'Streams'. Set 'Stream Codeline' to '//streams/${PatchNumber}. Save. Choose 'Build with Parameters'. Error above seen: Started by user unknown or anonymous hudson.AbortException: Error in client specification. Error detected at line 18. Stream ' //streams/' must begin with '//' . at org.jenkinsci.plugins.p4.client.ClientHelper.clientLogin(ClientHelper.java:167) at org.jenkinsci.plugins.p4.client.TempClientHelper.<init>(TempClientHelper.java:40) at org.jenkinsci.plugins.p4.scm.P4SCMFileSystem.<init>(P4SCMFileSystem.java:26) at org.jenkinsci.plugins.p4.scm.P4SCMFileSystem$BuilderImpl.build(P4SCMFileSystem.java:77) Caused: java.io.IOException at org.jenkinsci.plugins.p4.scm.P4SCMFileSystem$BuilderImpl.build(P4SCMFileSystem.java:79) at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:198) at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:174) at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:108) at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:67) at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:303) at hudson.model.ResourceController.execute(ResourceController.java:97) at hudson.model.Executor.run(Executor.java:429) Finished: FAILURE

          Karl Wirth added a comment -

          Note that dhoerner has chased this. Please review in the next prioritization meeting.

          Karl Wirth added a comment - Note that dhoerner has chased this. Please review in the next prioritization meeting.

          Paul Allen added a comment -

          Paul Allen added a comment - https://swarm.workshop.perforce.com/changes/25655

          Paul Allen added a comment -

          Ready for release.

          Paul Allen added a comment - Ready for release.

          Paul Allen added a comment -

          Release in 1.10.0

          Paul Allen added a comment - Release in 1.10.0

          Thank you, this feature works now!

          There is only a small issue now: In the jenkins log, the variables are not replaces. Example: Obtained Jenkinsfile from p4-Perforce-${P4_DEPOT}/${P4_STREAM}

           

          Maybe this can be fixed.

          Daniel Hoerner added a comment - Thank you, this feature works now! There is only a small issue now: In the jenkins log, the variables are not replaces. Example: Obtained Jenkinsfile from p4-Perforce-${P4_DEPOT}/${P4_STREAM}   Maybe this can be fixed.

          Karl Wirth added a comment -

          Hi dhoerner - Thanks for letting us know.  I'll test it here.

          Karl Wirth added a comment - Hi dhoerner - Thanks for letting us know.  I'll test it here.

          Karl Wirth added a comment -

          Hi dhoerner - Can you provide a bit of the log where you see the expanded name. On my test system I only see in on the following line:

          Obtained Jenkinsfile from p4-JenkinsMasterAdminUser-//streams/${MYSTREAM}

          Karl Wirth added a comment - Hi dhoerner - Can you provide a bit of the log where you see the expanded name. On my test system I only see in on the following line: Obtained Jenkinsfile from p4-JenkinsMasterAdminUser- //streams/${MYSTREAM}

          p4karl Yes, here it is, this is the very beginning of the console log:

           

          Started by user ******
          Obtained Jenkinsfile from p4-Perforce-${P4_DEPOT}/${P4_STREAM}
          Running in Durability level: MAX_SURVIVABILITY
          Loading library BMS-Libraries@2999/10/11:08:04:40
          

           

          Expected:

          Started by user ******
          Obtained Jenkinsfile from p4-Perforce-MyReplacedDepotName/MyReplacedStream
          Running in Durability level: MAX_SURVIVABILITY
          Loading library BMS-Libraries@2999/10/11:08:04:40
          

          In your example, I expect to see the replaced value of ${MYSTREAM}

           

          Daniel Hoerner added a comment - p4karl Yes, here it is, this is the very beginning of the console log:   Started by user ****** Obtained Jenkinsfile from p4-Perforce-${P4_DEPOT}/${P4_STREAM} Running in Durability level: MAX_SURVIVABILITY Loading library BMS-Libraries@2999/10/11:08:04:40   Expected: Started by user ****** Obtained Jenkinsfile from p4-Perforce-MyReplacedDepotName/MyReplacedStream Running in Durability level: MAX_SURVIVABILITY Loading library BMS-Libraries@2999/10/11:08:04:40 In your example, I expect to see the replaced value of ${MYSTREAM}  

          Karl Wirth added a comment -

          Hi dhoerner - Thanks for the confirmation. I've raised a new job for this and added Paul's and my comments - JENKINS-57906.

          Karl Wirth added a comment - Hi dhoerner - Thanks for the confirmation. I've raised a new job for this and added Paul's and my comments - JENKINS-57906 .

            p4paul Paul Allen
            dhoerner Daniel Hoerner
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: