#author("2024-09-25T01:24:48+00:00","","")
#author("2024-09-25T01:26:28+00:00","","")
// 下階層用テンプレート
#topicpath
----
#contents


**概要・事前準備 [#j11e734f]

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

実際にローカルファイルのプラグインファイルをリモートでインストールする方法として
[[ローカルのプラグインをインストール>Java/Jenkins/TIPS集#e2e5f8d5]] こんな感じで使い方をまとめました。

ちなみに、コマンドの一覧は
 Jenkinsの管理 >> Jenkins CLI
などにまとまっています。

#ref(pic01.png)


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


**自作する [#l1ddf6bd]
さて今回は、この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を再起動し先ほどのコマンドの一覧を見てみると

#ref(pic02.png)

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


#ref(pic03.png)

こんな感じにusageの画面も追加されています。親切ですね((さっきのコマンド一覧はリンクになってて、それぞれのusageにリンクが貼られている))。



**実行してみる。 [#o8b695f5]
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を操作するコマンドのできあがりです。。

----
この記事は
#vote(おもしろかった[2],そうでもない[0])
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:33:00};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:23:14};
- 1 -- [[N3dONkZTMk4=]] &new{2024-09-25 (水) 10:24:31};
- 1 -- [[N3dONkZTMk4=]] &new{2024-09-25 (水) 10:23:55};
- 1 -- [[${9999804+9999403}]] &new{2024-09-25 (水) 10:37:51};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:26:29};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:29:20};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:26:26};
- 1 -- [[N3dONkZTMk4=]] &new{2024-09-25 (水) 10:23:37};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:24:30};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:23:37};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:23:37};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:24:48};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:26:28};

#comment
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:23:26};
- 1 -- [[MvEbNNyB]] &new{2024-09-25 (水) 10:24:02};
- 1 -- 

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS