Jenkins管道:如何从vars dir中的Groovy脚本访问自定义全局变量?

用户名

我可以这样声明一个全局的类实例:

gitUtils = new GitUtils()

pipeline {
  ...
  echo "hello: " + gitUtils.doSomething()
}

但是,如果管道在“ vars”目录中调用了定义为groovy脚本的函数,gitUtils则不再可见

def call() {
  def something = gitUtils.doSomething()
}

我也尝试使用@Field,但它什么也没改变。请注意,所有管道都在共享库中定义(项目jenkinsfile只是从该共享库调用一个函数)。

在此示例中,如何从/ vars中的groovy脚本访问gitUtils?

我知道我们可以将实例作为在/ vars中声明的函数的参数来传递,但是更多的函数使用实用类,这更加丑陋。您是否想将'echo'或'sh'函数作为参数传递?不,这是一样的。

我知道我们不能在src中定义的所有类上使用并且不能使用多个公共方法定义groovy脚本。在这里,我们可以想象在/ vars中创建具有许多公共方法的gitutils.groovy。但这意味着要在管道中使用“脚本”闭包来选择所需的方法,如下所示:

script {
  gitutils.doSomething()
}

我不想要这个。我倾向于在/ vars中为每个groovy脚本创建一个函数。因此,我们可以直接分步调用它们,如下所示:

 steps {
    myGroovyScriptFunction()
 }

但是这样做会增加功能的数量,并且功能无法正确组织。这就是为什么要在/ vars中创建“大步函数”的原因,该函数在类的实例中使用更通用的函数(在更好的情况下甚至是静态的)。因此,我想要一个全局实例,而不是在每个常规脚本中创建一个新实例。

上下文:声明式管道,openshift詹金斯,具有动态pod模板的从属

洛伦佐·奥尔萨蒂(Lorenzo Orsatti)

因为JENKINS-42360是不可能的

我认为,在没有脚本块的情况下使用全局步骤的最佳方法是定义一个实例GitUtils并直接在全局步骤中使用它。如果需要管道步骤上下文,可以将其传递给构造函数:

# vars/myStep.groovy

import my.packagename.GitUtils

def call() {
    GitUtils gitUtils = new GitUtils(steps) 
    ...
} 

然后您可以GitUtils按照此处所述使用内部步骤请记住要按照文档定义GitUtils实施Serializable

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NIFI-如何从updateattributes到groovy脚本访问自定义变量

来自分类Dev

如何访问模板中的全局变量?

来自分类Dev

如何从jenkins Powershell脚本更新Env vars

来自分类Dev

在Groovy中定义类时如何访问脚本绑定变量?

来自分类Dev

如何在Roslyn脚本环境中访问和编辑全局变量?

来自分类Dev

如何检测Lua脚本何时访问全局变量?

来自分类Dev

如何在rpg程序中定义可在调用函数中访问的全局变量

来自分类Dev

如何在rpg程序中定义可在调用函数中访问的全局变量

来自分类Dev

如何在Nuxt中定义全局变量以在任何地方访问

来自分类Dev

如何访问全局变量

来自分类Dev

如何访问变量中的自定义属性的值?

来自分类Dev

Jenkins自定义管道以及如何添加要在jenkinsfile中设置的属性

来自分类Dev

Jenkins 管道自定义脚本(关闭应用程序)

来自分类Dev

如何从jenkins管道groovy脚本使用RTC插件?

来自分类Dev

如何在Python中访问全局变量?

来自分类Dev

Tcl线程:如何访问线程中的全局变量

来自分类Dev

如何从Node中的required()文件访问全局变量?

来自分类Dev

如何动态访问Node中的全局变量?

来自分类Dev

如何在r函数中访问全局变量

来自分类Dev

如何在子程序中访问全局变量

来自分类Dev

如何在Kivy文件中访问全局变量?

来自分类Dev

如何在Python中访问全局变量?

来自分类Dev

如何在Zend Framework Controller中访问全局变量

来自分类Dev

如何从Node中的required()文件访问全局变量?

来自分类Dev

如何在 javascript 库中访问 Twig 全局变量

来自分类Dev

如何在nunjucks中定义全局变量?

来自分类Dev

如何在codeIgniter中定义全局变量(值)

来自分类Dev

如何在R包中定义“隐藏的全局变量”?

来自分类Dev

如何在树枝模板文件中定义全局变量?

Related 相关文章

  1. 1

    NIFI-如何从updateattributes到groovy脚本访问自定义变量

  2. 2

    如何访问模板中的全局变量?

  3. 3

    如何从jenkins Powershell脚本更新Env vars

  4. 4

    在Groovy中定义类时如何访问脚本绑定变量?

  5. 5

    如何在Roslyn脚本环境中访问和编辑全局变量?

  6. 6

    如何检测Lua脚本何时访问全局变量?

  7. 7

    如何在rpg程序中定义可在调用函数中访问的全局变量

  8. 8

    如何在rpg程序中定义可在调用函数中访问的全局变量

  9. 9

    如何在Nuxt中定义全局变量以在任何地方访问

  10. 10

    如何访问全局变量

  11. 11

    如何访问变量中的自定义属性的值?

  12. 12

    Jenkins自定义管道以及如何添加要在jenkinsfile中设置的属性

  13. 13

    Jenkins 管道自定义脚本(关闭应用程序)

  14. 14

    如何从jenkins管道groovy脚本使用RTC插件?

  15. 15

    如何在Python中访问全局变量?

  16. 16

    Tcl线程:如何访问线程中的全局变量

  17. 17

    如何从Node中的required()文件访问全局变量?

  18. 18

    如何动态访问Node中的全局变量?

  19. 19

    如何在r函数中访问全局变量

  20. 20

    如何在子程序中访问全局变量

  21. 21

    如何在Kivy文件中访问全局变量?

  22. 22

    如何在Python中访问全局变量?

  23. 23

    如何在Zend Framework Controller中访问全局变量

  24. 24

    如何从Node中的required()文件访问全局变量?

  25. 25

    如何在 javascript 库中访问 Twig 全局变量

  26. 26

    如何在nunjucks中定义全局变量?

  27. 27

    如何在codeIgniter中定义全局变量(值)

  28. 28

    如何在R包中定义“隐藏的全局变量”?

  29. 29

    如何在树枝模板文件中定义全局变量?

热门标签

归档