概要・事前準備 †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を操作するコマンドのできあがりです。。 この記事は
SI |