- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2024-04-15T10:41:49+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(おもしろかった,そうでもない)
#vote(おもしろかった[2],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}