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

Replay with ModernSCM doesn't use relevant library version.

XMLWordPrintable

    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: Minor Minor
    • p4-plugin
    • p4-plugin 1.10.7

      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
      

       

       

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

              Created:
              Updated: