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

Replay with ModernSCM doesn't use relevant library version.

    Details

    • Type: Improvement
    • Status: Open (View Workflow)
    • Priority: Minor
    • Resolution: Unresolved
    • Component/s: p4-plugin
    • Labels:
    • Environment:
      p4-plugin 1.10.7
    • Similar Issues:

      Description

      Replaying a dynamically loaded library will load the latest version of the library and not the library available at the time of the build.

       

      Reproduction Steps:

      (1) Submit following file to Perforce:

      //depot/lib_autoload/libs/src/com/f5/v4/Device.groovy

       

      #!groovy
      package com.f5.v4class Device implements Serializable {
           static void main()
           {
             println("This is Device in the Library I EDITED THIS.")
           }
           static void test()
           {
             println("This is test in Device in the Library")
           }     
           static String test2()
           {
             return "This is test2() in Device in the Library"
           }
      }
      

      (2) Create a pipeline job with code similar to:

       

       

      def f5Lib
      
      timestamps{
          try {
              node ('master') {
                  f5Lib = loadF5Lib()
                  def buildData = f5Lib.com.f5.v4.Device.test2();
                  echo buildData
                  }
          }
          catch (e) {
              throw e
          }    echo "Running some tests here..."
      }
      
      
      // Load a specific Library
      def loadF5Lib() {
          def lib = library( identifier : '@now',retriever: modernSCM(globalLib(charset: 'none', credential: 'JenkinsMaster', id: '9bb4320c-c31c-46ce-8c5f-68872f519067', path: '//depot/lib_autoload/libs/...')))
          
          return lib
      }
      

      (3) Run the job (Build#1). The following text is seen in the console log:

       

       

      This is test2() in Device in the Library
      

      (4) Change the returned text in the library method ' test2' to be:

       

       

      static String test2() 
      { 
           return "This is the edited test2() in Device in the Library" 
      } 
      

       

      (5) Run the job (Build #2)

      (6) Replay Build #1. The text displayed is the latest text from the edit made in step (4):

      This is the edited test2() in Device in the Library
      

      Expected Result:

      This is test2() in Device in the Library
      

       

       

        Attachments

          Activity

          There are no comments yet on this issue.

            People

            • Assignee:
              Unassigned
              Reporter:
              p4karl Karl Wirth
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: