概要・事前準備

Jenkins にはJenkinsの操作をリモートで行うためのコマンドラインのインタフェース Jenkins CLI という機構があります。コレを使うとリモートからJenkinsを再起動したり、プラグインをインストールしたり、ジョブをビルドしたり、なんて事ができるわけですね。

実際にローカルファイルのプラグインファイルをリモートでインストールする方法として ローカルのプラグインをインストール こんな感じで使い方をまとめました。

ちなみに、コマンドの一覧は

Jenkinsの管理 >> Jenkins CLI

などにまとまっています。

pic01.png

以下、ローカルのプラグインをインストール ココにでてくる jenkins-cli.jar がすでにダウンロード済みの前提で話を進めたいと思います。

自作する

さて今回は、このJenkins CLIを自作してみたいと思いますが、方法は簡単で CLICommand クラスを拡張するだけです。以下サンプルコード。

package nu.mine.kino.jenkins.plugins.projectmanagement.commands;

import hudson.Extension;
import hudson.cli.CLICommand;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;

import org.kohsuke.args4j.Argument;

/**
 * @author Masatomi KINO
 * @version $Revision: 863 $
 */
@Extension
public class HelloCommand extends CLICommand {

    @Argument(metaVar = "JOB", usage = "プロジェクト名を指定します。", index = 0, required = true)
    public AbstractProject<?, ?> job;

    @Argument(metaVar = "MSG1", usage = "メッセージ指定1", index =  1, required = true)
    public String msg1;

    @Argument(metaVar = "MSG2", usage = "メッセージ指定2", index = 2, required = false)
    public String msg2;

    @Override
    public String getShortDescription() {
        return "Hello Worldなサンプルです";
    }

    @Override
    protected int run() throws Exception {
        stdout.println("Hello World, " + msg1 + ", " + msg2);
        final AbstractBuild<?, ?> build = job.getLastSuccessfulBuild();
        stdout.println(build.getNumber());
        stdout.println(build.getUrl());

        return 0;
    }

}

こんだけです。コンストラクタで渡される引数にannotationされた index番号が引数の順番、requiredが必須かどうか、などなど見たままって感じですね。

Jenkinsを再起動し先ほどのコマンドの一覧を見てみると

pic02.png

確かに追加されていることが分かります。コマンドの名前はクラス名から類推されて決定されるようですね*1

pic03.png

こんな感じにusageの画面も追加されています。親切ですね*2

実行してみる。

usageの通り実行してみます。

c:\tmp>java -jar jenkins-cli.jar -s http://localhost:8080/jenkins/ hello Test messege1 message2

実行結果は以下の通り。

Hello World, messege1, message2
1
job/Test/1/

c:\tmp>

実行されました! このメソッドでいろいろ処理を記述すれば、リモートからコマンドラインでJenkinsを操作するコマンドのできあがりです。。


この記事は

選択肢 投票
おもしろかった 2  
そうでもない 0  

現在のアクセス:3668


*1 HelloCommand? → hello
*2 さっきのコマンド一覧はリンクになってて、それぞれのusageにリンクが貼られている

添付ファイル: filepic03.png 523件 [詳細] filepic02.png 554件 [詳細] filepic01.png 702件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-04-15 (月) 19:41:49 (23h)