Jenkins插件开发-自定义Pipeline Snippet Generator的默认行为

时间:2019-01-03 22:04:40

标签: jenkins jenkins-plugins

在以下网址下有一个摘要生成器:

http://<your-jenkins-instance>/job/<your-job>/pipeline-syntax/

它将根据您在表单上输入的数据生成管道步骤代码段。让我们看一下libraryResource步骤,因为这将是一个很好的例子。如果我们不填写Character encoding,它将不会包含在生成的代码段中。我试图在自定义插件中实现的行为无济于事。它在我的插件中的工作方式是,每个未设置的变量总是在生成的代码段中转换为空,例如value: '',而不是完全省略。

我一直在查看代码,找不到任何可以替代我观察到的默认行为的东西:

https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/master/src/main/resources/org/jenkinsci/plugins/workflow/libs/ResourceStep/config.jelly

https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/master/src/main/java/org/jenkinsci/plugins/workflow/libs/ResourceStep.java

有线索提示在生成代码段时如何强制跳过未设置的值吗?

1 个答案:

答案 0 :(得分:1)

通常,如果代码段为null,则在代码段生成过程中会跳过该值,因此,如果为ResourceStep.encoding,则在方法中将其转换为null

@DataBoundSetter public void setEncoding(String encoding) {
    this.encoding = Util.fixEmptyAndTrim(encoding);
}

请参阅https://github.com/jenkinsci/workflow-cps-global-lib-plugin/blob/workflow-cps-global-lib-2.15/src/main/java/org/jenkinsci/plugins/workflow/libs/ResourceStep.java#L67

更多信息,您可以在这里找到: https://jenkins.io/doc/developer/plugin-development/pipeline-integration/