我们如何扩展 Jenkins 工作流 dsl?
How do we extend the Jenkins workflow dsl?
如果我正在开发一个插件并想从使用这样的步骤切换:
step([$class: 'Gradle',
switches: "-PenableInstallerDistribution=true",
tasks: 'build install',
gradleName: '(Default)',
useWrapper: true,
makeExecutable: true,
fromRootBuildScriptDir: true,
useWorkspaceAsHome: true])
像这样一个不错的 dsl 元素:
gradle switches: "-PenableInstallerDistribution=true",
tasks: 'build install',
gradleName: '(Default)',
useWrapper: true,
makeExecutable: true,
fromRootBuildScriptDir: true,
useWorkspaceAsHome: true
也许最重要的是,出现在片段生成器中,我该怎么办?我查看了我能找到的文档,但仍然找不到关于扩展 dsl 的任何建议。
首先,如果您除了省略 step
之外没有真正自定义步骤配置,那么这可能是浪费时间,因为 Workflow 核心的未来修订可能会包含“元步骤”的语法糖”,例如 step
、checkout
和(现在)wrap
。 (并且任何 SimpleBuildStep
已经显示在 step
下的 代码段生成器 中。)
也就是说,如果您确实需要创建第一个 class 步骤,则需要添加对 workflow-step-api
的插件依赖,并且通常会扩展 AbstractStepImpl
、AbstractStepDescriptorImpl
, 和 AbstractStepExecutionImpl
.
如果您正在尝试实施 JENKINS-27393 then I would say that a useful implementation needs to wait for the infrastructural JENKINS-26055,因为仅包装现有的 Gradle
构建器将不允许流程在此步骤中间的 Jenkins 重启(或从属断开连接)中幸存下来。
如果我正在开发一个插件并想从使用这样的步骤切换:
step([$class: 'Gradle',
switches: "-PenableInstallerDistribution=true",
tasks: 'build install',
gradleName: '(Default)',
useWrapper: true,
makeExecutable: true,
fromRootBuildScriptDir: true,
useWorkspaceAsHome: true])
像这样一个不错的 dsl 元素:
gradle switches: "-PenableInstallerDistribution=true",
tasks: 'build install',
gradleName: '(Default)',
useWrapper: true,
makeExecutable: true,
fromRootBuildScriptDir: true,
useWorkspaceAsHome: true
也许最重要的是,出现在片段生成器中,我该怎么办?我查看了我能找到的文档,但仍然找不到关于扩展 dsl 的任何建议。
首先,如果您除了省略 step
之外没有真正自定义步骤配置,那么这可能是浪费时间,因为 Workflow 核心的未来修订可能会包含“元步骤”的语法糖”,例如 step
、checkout
和(现在)wrap
。 (并且任何 SimpleBuildStep
已经显示在 step
下的 代码段生成器 中。)
也就是说,如果您确实需要创建第一个 class 步骤,则需要添加对 workflow-step-api
的插件依赖,并且通常会扩展 AbstractStepImpl
、AbstractStepDescriptorImpl
, 和 AbstractStepExecutionImpl
.
如果您正在尝试实施 JENKINS-27393 then I would say that a useful implementation needs to wait for the infrastructural JENKINS-26055,因为仅包装现有的 Gradle
构建器将不允许流程在此步骤中间的 Jenkins 重启(或从属断开连接)中幸存下来。