#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 --