• Icon: Improvement Improvement
    • Resolution: Fixed
    • Icon: Major Major
    • pipeline
    • None

      Provide an area in the Git repository to store Groovy files, where function calls in DSL scripts like xyz(a, b, c) automatically resolve into loading xyz.groovy and calling its run(a, b, c) method.

      This will enable the team that designs workflow libraries to really beautify the syntax that end users will see.

          [JENKINS-26135] User-defined functions in git-global-lib

          Jesse Glick added a comment -

          If implemented, parallel could potentially be defined as something like

          void run(branches) {
              forkBox {
                  for (e : branches.entrySet()) {
                      fork(e.key) {e.getValue()()}
                  }
              }
          }
          

          Jesse Glick added a comment - If implemented, parallel could potentially be defined as something like void run(branches) { forkBox { for (e : branches.entrySet()) { fork(e.key) {e.getValue()()} } } }

          Jesse Glick added a comment -

          PR 131 addresses a similar, though not identical, RFE.

          Jesse Glick added a comment - PR 131 addresses a similar, though not identical, RFE.

          Code changed in jenkins
          User: Jesse Glick
          Path:
          CHANGES.md
          http://jenkins-ci.org/commit/workflow-plugin/67acb26ea325bffb459aac8d81a01e0bcf8c6510
          Log:
          JENKINS-26135 Noting.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: CHANGES.md http://jenkins-ci.org/commit/workflow-plugin/67acb26ea325bffb459aac8d81a01e0bcf8c6510 Log: JENKINS-26135 Noting.

          Code changed in jenkins
          User: Kohsuke Kawaguchi
          Path:
          aggregator/src/test/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepositoryTest.java
          cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScript.java
          http://jenkins-ci.org/commit/workflow-plugin/9cdadd25a63ea5f586f275741cd077f9ab2e7682
          Log:
          JENKINS-26135

          Global variable should be usable as a function, just like in Groovy
          Closure property can be called like a function.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: aggregator/src/test/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepositoryTest.java cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScript.java http://jenkins-ci.org/commit/workflow-plugin/9cdadd25a63ea5f586f275741cd077f9ab2e7682 Log: JENKINS-26135 Global variable should be usable as a function, just like in Groovy Closure property can be called like a function.

          Code changed in jenkins
          User: Jesse Glick
          Path:
          CHANGES.md
          aggregator/src/test/groovy/org/jenkinsci/plugins/workflow/cps/steps/LoadStepTest.groovy
          aggregator/src/test/java/org/jenkinsci/plugins/workflow/CpsFlowExecutionTest.java
          aggregator/src/test/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepositoryTest.java
          aggregator/src/test/java/org/jenkinsci/plugins/workflow/cps/steps/LoadStepTest.java
          aggregator/src/test/java/org/jenkinsci/plugins/workflow/steps/parallel/ParallelStepTest.java
          cps-global-lib/README.md
          cps-global-lib/src/main/java/org/jenkinsci/plugins/workflow/cps/global/UserDefinedGlobalVariable.java
          cps-global-lib/src/main/java/org/jenkinsci/plugins/workflow/cps/global/UserDefinedGlobalVariableList.java
          cps-global-lib/src/main/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepository.java
          cps-global-lib/src/main/resources/org/jenkinsci/plugins/workflow/cps/global/UserDefinedGlobalVariable/help.jelly
          cps-global-lib/src/test/java/org/jenkinsci/plugins/workflow/cps/global/UserDefinedGlobalVariableListTest.java
          cps/pom.xml
          cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsClosure2.java
          cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsGroovyShell.java
          cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScript.java
          cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsWhitelist.java
          cps/src/main/java/org/jenkinsci/plugins/workflow/cps/GlobalVariable.java
          cps/src/main/java/org/jenkinsci/plugins/workflow/cps/GlobalVariableSet.java
          cps/src/main/java/org/jenkinsci/plugins/workflow/cps/Snippetizer.java
          pom.xml
          http://jenkins-ci.org/commit/workflow-plugin/28c9600d1c623779b62e2e46e187671671501a21
          Log:
          Merge pull request #131 from jenkinsci/user-defined-global-libs

          JENKINS-26135 Allow CPS global lib scripts to define global variables

          Compare: https://github.com/jenkinsci/workflow-plugin/compare/4423736b18e5...28c9600d1c62

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: CHANGES.md aggregator/src/test/groovy/org/jenkinsci/plugins/workflow/cps/steps/LoadStepTest.groovy aggregator/src/test/java/org/jenkinsci/plugins/workflow/CpsFlowExecutionTest.java aggregator/src/test/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepositoryTest.java aggregator/src/test/java/org/jenkinsci/plugins/workflow/cps/steps/LoadStepTest.java aggregator/src/test/java/org/jenkinsci/plugins/workflow/steps/parallel/ParallelStepTest.java cps-global-lib/README.md cps-global-lib/src/main/java/org/jenkinsci/plugins/workflow/cps/global/UserDefinedGlobalVariable.java cps-global-lib/src/main/java/org/jenkinsci/plugins/workflow/cps/global/UserDefinedGlobalVariableList.java cps-global-lib/src/main/java/org/jenkinsci/plugins/workflow/cps/global/WorkflowLibRepository.java cps-global-lib/src/main/resources/org/jenkinsci/plugins/workflow/cps/global/UserDefinedGlobalVariable/help.jelly cps-global-lib/src/test/java/org/jenkinsci/plugins/workflow/cps/global/UserDefinedGlobalVariableListTest.java cps/pom.xml cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsClosure2.java cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsGroovyShell.java cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScript.java cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsWhitelist.java cps/src/main/java/org/jenkinsci/plugins/workflow/cps/GlobalVariable.java cps/src/main/java/org/jenkinsci/plugins/workflow/cps/GlobalVariableSet.java cps/src/main/java/org/jenkinsci/plugins/workflow/cps/Snippetizer.java pom.xml http://jenkins-ci.org/commit/workflow-plugin/28c9600d1c623779b62e2e46e187671671501a21 Log: Merge pull request #131 from jenkinsci/user-defined-global-libs JENKINS-26135 Allow CPS global lib scripts to define global variables Compare: https://github.com/jenkinsci/workflow-plugin/compare/4423736b18e5...28c9600d1c62

          Jesse Glick added a comment -

          Merged.

          Jesse Glick added a comment - Merged.

          Code changed in jenkins
          User: Kohsuke Kawaguchi
          Path:
          cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScript.java
          http://jenkins-ci.org/commit/workflow-cps-plugin/fee680c0736ee5a5610ac23158c45c0e273ea951
          Log:
          JENKINS-26135

          Global variable should be usable as a function, just like in Groovy
          Closure property can be called like a function.

          Originally-Committed-As: 9cdadd25a63ea5f586f275741cd077f9ab2e7682

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: cps/src/main/java/org/jenkinsci/plugins/workflow/cps/CpsScript.java http://jenkins-ci.org/commit/workflow-cps-plugin/fee680c0736ee5a5610ac23158c45c0e273ea951 Log: JENKINS-26135 Global variable should be usable as a function, just like in Groovy Closure property can be called like a function. Originally-Committed-As: 9cdadd25a63ea5f586f275741cd077f9ab2e7682

            kohsuke Kohsuke Kawaguchi
            jglick Jesse Glick
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: