Jenkins にはJenkinsの操作をリモートで行うためのコマンドラインのインタフェース Jenkins CLI という機構があります。コレを使うとリモートからJenkinsを再起動したり、プラグインをインストールしたり、ジョブをビルドしたり、なんて事ができるわけですね。
実際にローカルファイルのプラグインファイルをリモートでインストールする方法として ローカルのプラグインをインストール こんな感じで使い方をまとめました。
ちなみに、コマンドの一覧は
Jenkinsの管理 >> Jenkins CLI
などにまとまっています。
以下、ローカルのプラグインをインストール ココにでてくる 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を再起動し先ほどのコマンドの一覧を見てみると
確かに追加されていることが分かります。コマンドの名前はクラス名から類推されて決定されるようですね*1。
こんな感じに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を操作するコマンドのできあがりです。。
この記事は
現在のアクセス:3707