グローバル構成を追加したいJenkins用のRubyプラグインがあります。
構成は、Jenkins グローバル構成ページに表示されます。
現在、カスタム記述子を使用してグローバル構成を保存することができました。次のように、親クラス(Java.hudson.model.Descriptor)によって行われるシリアル化で実装しようとしました:
class GitlabWebHookRootActionDescriptor < Jenkins::Model::DefaultDescriptor
attr_reader :conf_param
def configure(req, form)
req.bindJSON(self, form)
save
true
end
end
このソリューションは、保存を親クラスに委任します。これに関する問題は次のとおりです。
---- Debugging information ----
message : Could not call org.jruby.RubyClass.writeObject()
cause-exception : java.io.IOException
cause-message : can not serialize singleton object
-------------------------------
シングルトンが何であるかを理解できなかったため、構成をファイルに保存およびロードする独自の方法を作成することになりました。コードはこちらでご覧いただけます。
これは間違いなくデータを XML ファイルに保存し、jenkins の起動時にそこから読み取ります。
// on startup
INFO: =========== GitlabWebHookRootActionDescriptor initialize ===================
INFO: conf_param: aloha
// on save
INFO: =========== GitlabWebHookRootActionDescriptor configure ===================
INFO: form: {"conf_param"=>"juku"}
しかし、保存した構成を Jenkins 構成ページに表示したり、ルート アクション自体から使用したりすることはできません。
記述子を root アクションに追加しました:describe_as Java.hudson.model.Descriptor, :with => GitlabWebHookRootActionDescriptor
が成功しませんでした。記述子の前にルート アクションがロードされていることをログで確認できますが、それが問題かどうかはわかりません。
ルートアクションから記述子に保存された構成を使用する方法について誰か考えがありますか?