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

Final-keyword doesn’t work in Pipeline

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • pipeline
    • None
    • Jenkins: 2.492.2
      OS: Linux - 5.15.167.4-microsoft-standard-WSL2
      Java: 17.0.14 - Eclipse Adoptium (OpenJDK 64-Bit Server VM)
      installed plugins in attachment

      Discussion started here https://community.jenkins.io/t/final-keyword-doesnt-work-properly-in-pipeline/33172

      Example pipeline:

      pipeline {
          agent any 
          stages { 
              stage('Hello') { 
                  steps { 
                      script { 
                          final String str = "1" 
                          str = "2" 
                          echo str 
                      } 
                  } 
              } 
          } 
      } 
      

      For some reason final doesn't work, i.e. it doesn't create a constant and the variable value can be changed.
      The pipeline output is 2.

      The behavior in the Shared library is similar for variables with local scope, but if you declare a class field as final and try to change it in one of the methods, you get:

      hudson.remoting.ProxyException: groovy.lang.ReadOnlyPropertyException: Cannot set readonly property: myProperty for class: mainpackage.MyClass
      

            Unassigned Unassigned
            pyatizbyantsevia Ilya Pyatizbyantsev
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: