【问题标题】:How does DSL extension in Jenkins plugin workJenkins 插件中的 DSL 扩展如何工作
【发布时间】:2024-04-15 13:15:01
【问题描述】:

我想为我的 Jenkins 插件(使用 maven 构建)创建 DSL 扩展,就像在 Jenkins 的 Docker 插件示例中一样。我看到 Docker.groovy 的 groovy 文件位于:src/main/resources/org/jenkinsci/plugins/docker/workflow/Docker.groovy

这个 groovy 文件是否必须在 org.jenkinsci.plugin.docker.workflow 中,或者我可以将它放在资源中吗?有什么区别?

另外,如果我以这种方式在 groovy 文件中定义我的 DSL 扩展,那么 DSL 扩展是否可用于在管道文件中隐式调用?

【问题讨论】:

    标签: jenkins jenkins-plugins jenkins-job-dsl


    【解决方案1】:

    为了通过您的插件在 Pipeline DSL 中提供一个步骤,您需要定义一个 Step 的子类来执行所需的任务。这可以完全在 Java 中完成,并且是在 Jenkins 插件中添加扩展 Pipeline DSL 的首选方法。

    您链接的 Docker 示例在这种情况下不常见,并且没有定义典型的 Pipeline DSL 步骤(Pipeline 中的 docker 指令功能类似于 agentstep 和 @987654327 之间的交叉@ 堵塞)。此外,它似乎包含一个 loads the Groovy script dynamically 的 Java 类,它充当指令的入口点。

    Groovy 可用于扩展 Pipeline DSL;然而,这是在 shared library 的上下文中完成的,这意味着更多的是在内部使用的样板减少工具。

    【讨论】:

      最近更新 更多