LoginSignup
0
0

More than 5 years have passed since last update.

doCheckXxxx と doFillXxxxItems

Posted at

Jenkins 使ってますか?

便利ですよねー。私が始めて触ったのは前のプロジェクトで、その頃はまだ Hudson おじさんでした。
今ではJenkins を使っていなかったら、そのプロジェクトは大丈夫かしら?と心配になります。

Jenkinsプラグイン作ってますか?

このJenkinsの良いところとして、さまざまなプラグインがあり、それらを組み合わせて使う事で、より Jenkins は賢くなり、Jenkins で出来る事が増えます。
そして、Jenkins が Java で実装されているということで、そのプラグインも Java で(簡単に)作る事が出来ます。

とゆーことで、Jenkins プラグインを作成する際に、私が得た(躓いた)知識を幾つかに分けて紹介します。
(もし間違っていましたら、ご指摘頂けると助かります)

doCheckXxxx と doFillXxxxItems について

Jenkins プラグインでは、設定画面などの入力項目に対して、特定の命名規則に沿ったメソッドを用意してあげると、Jenkins がそのメソッドを勝手に呼び出してくれるものがあります。
それが doCheckXxxx と doFillXxxxItems です(他にもあるのかしら(・3・)?)。
それぞれ具体的に見ていきます。

doCheckXxxx

Jenkins のプラグインを作成する中で、設定画面等に独自の入力項目を用意したくなる場合があります。

テキストボックス
プルダウン
チェックボックス
etc...

これらの中でテキストボックスに対して入力チェックを行いたい場合、その対象のテキストボックスのプロパティ名に対応するチェックメソッドを用意してあげると、そのテキストボックスに対する入力があった場合に、用意したチェックメソッドを Jenkins が呼び出してくれます。

こんな感じ。

jelly のサンプル

src/main/resources/com/sample/jenkins/plugin/SampleBuilder/config.jelly
<f:entry title="Free word" field="word">
  <f:textbox />
</f:entry>

Java のサンプル

src/main/java/com/sample/jenkins/plugin/SampleBuilder$DescriptorImpl
public FormValidation doCheckWord(@QueryParameter String value) {
    if (value.length() == 0) {
        return FormValidation.error("条件は必須です。");
    }
    return FormValidation.ok();
}

大事なのは、 で指定した field 属性と同じ名前(キャメルケース)で、チェックメソッドを用意するということ。
今回の例でいえば、 の field 属性は「word」なので、チェックメソッドは、「doCheckWord」となります。

もっと詳しい解説はこちらのサイトとかを見てみて下さい(丸投げ)より詳しく解説されてます( ̄▽ ̄)。

doFillXxxxItems

同じく入力項目としてプルダウンを用意して、今度はその選択候補を設定してくれるのがこのメソッド(命名規則)。

こんな感じ。

jelly のサンプル

<f:entry title="Pulldown" field="person">
  <f:select />
</f:entry>

Java のサンプル

public ListBoxModel doFillPersonItems() {
    ListBoxModel items = new ListBoxModel();
    for (Person person : persons) {
        items.add(person.getName(), person.getId());
    }
    return items;
}

これも大事なのは、 で指定した field 属性と同じ名前(キャメルケース)で、チェックメソッドを定義するということ。
今回の例でいえば、 の field 属性は「person」なので、チェックメソッドは、「doFillPersonItems」となります。

Java で何かしら処理した値を出したいような場合には、これを使えば良いと思います。

逆に、「はい」「いいえ」みたいなものをプルダウンにしたいのなら、別にこの方法でなくても良いと思います。jelly ファイルにベタに書いたのでも個人的には問題無いんちゃうかな~(そもそも「はい」「いいえ」はプルダウンじゃなくて、ラジオとかチェックボックスだろ、という声が聞こえてきますが~(・ω・`))。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0