概要・事前準備

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  
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:33:00
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:23:14
  • 1 -- N3dONkZTMk4=? 2024-09-25 (水) 10:24:31
  • 1 -- N3dONkZTMk4=? 2024-09-25 (水) 10:23:55
  • 1 -- ${9999804+9999403}? 2024-09-25 (水) 10:37:51
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:26:29
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:29:20
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:26:26
  • 1 -- N3dONkZTMk4=? 2024-09-25 (水) 10:23:37
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:24:30
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:23:37
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:23:37
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:24:48
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:26:28

  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:23:26
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:24:02
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:23:17
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:23:14
  • 1 -- MvEbNNyB? 2024-09-25 (水) 10:23:00

SI


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

添付ファイル: filepic03.png 600件 [詳細] filepic02.png 641件 [詳細] filepic01.png 788件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-09-25 (水) 13:20:39 (37d)