JenkinsがJellyフォームから発信されたJSONデータを呼び出すことができるコンストラクターの作成に問題があります。mvn hpi:create
テストのために、次の2つのカスタムファイルを使用して最小限のJenkinsプラグインを作成しました。
src / main / resources / foo / hyde / jenkins / plugins /OptionalBlockSampleBuilder / config.jelly
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<f:block>
<table>
<f:optionalBlock name="enableText" title="Enable optional text" checked="${instance.enableText}">
<f:entry title="Optional text" field="text">
<f:textbox />
</f:entry>
</f:optionalBlock>
</table>
</f:block>
src / main / java / foo / hyde / jenkins / plugins /OptionalBlockSampleBuilder.java
package foo.hyde.jenkins.plugins;
public class OptionalBlockSampleBuilder extends hudson.tasks.Builder {
public final String text;
public final boolean enableText;
@org.kohsuke.stapler.DataBoundConstructor
public OptionalBlockSampleBuilder(String text, Boolean enableText) {
this.text = text;
this.enableText = (enableText != null) && enableText;
}
@Override
public boolean perform(hudson.model.AbstractBuild build, hudson.Launcher launcher, hudson.model.BuildListener listener) {
listener.getLogger().println("OptionalBlockSampleBuilder " + enableText + "/" + text);
return true;
}
@hudson.Extension
public static final class DescriptorImpl extends hudson.tasks.BuildStepDescriptor<hudson.tasks.Builder> {
public boolean isApplicable(Class<? extends hudson.model.AbstractProject> aClass) {
return true;
}
public String getDisplayName() {
return "Optional Block Sample";
}
}
}
私はpom.xmlの親に対して<groupId>org.jenkins-ci.plugins</groupId><artifactId>plugin</artifactId><version>1.454</version>
ビルドしており、すべてがビルドされます。Netbeans6.9.1はDebug Jenkinsを起動し、このビルドステップでジョブを作成できます。そのチェックボックスをチェックしないとすべてが機能し、OptionalBlockSampleBuilder false/null
ジョブのコンソール出力が期待されます。
しかし、チェックボックスをオンにしてテキストを追加すると、ジョブ構成を保存/適用すると、コンストラクターを呼び出そうとしたときに、Jenkinsコードの深さからこの例外が発生します。
java.lang.RuntimeException:
Failed to instantiate class
foo.hyde.jenkins.plugins.OptionalBlockSampleBuilder
from {
"enableText":{"text":"xx"},
"kind":"foo.hyde.jenkins.plugins.OptionalBlockSampleBuilder",
"stapler-class":"foo.hyde.jenkins.plugins.OptionalBlockSampleBuilder"
}
簡単な修正が必要です。私はさまざまな変更を試し、他のプラグインがそれをどのように使用するかを確認し、最終的にこの最小限のテストプラグインを作成しました。オプションのブロックを機能させるためにそれを修正する方法は?