超絶簡単なJenkinsコマンドラインクライアント作ってみた

https://github.com/cynipe/domo

仕事でちょいと使いたかったので作ってたやつをまとめてgem化してみた。rubyで作ったのはrubyを勉強してみたかったからというのと、別のツールの関係でシェルとの親和性が高い言語にしたかったというのが理由。実装内容は超絶簡単なのでJenkinsAPIはこんなに気軽に使えるよ!っていう例になるといいかなーとか。


ちなみにPluginの自動インストール機能もあったりするけど、PluginをインストールするAPIは内容なので画面操作させてインストールしているという無茶具合。まぁ、用途的には問題ないのでこれでよし。jenkins-cli.jarを使えば正攻法でインストールも出来るんだけど、rubyからjava叩きに行くのものなぁというのもあってこの手法*1


世の中的にはjenkins.rbといういけてるツールもあるんだけど、簡単にいじれて適当にその時必要なものを追加したい程度のものが欲しかったので。


ていうかhighlineとかthorとかいいね!こんなに簡単にCLIのサポートしてくれるライブラリがあるなんて感動。ツール周りではますますrubyにお世話になりそうです。

使い方の一部紹介

インストールはgem install domoしてください。

list
  指定のJenkinsのジョブの一覧を取得してコンソール上に表示します。

  例::

    $ domo list http://localhost:8080

trigger
  Jenkins上にあるジョブのうち指定されたジョブを実行します。

  例::

    $ domo trigger http://localhost:8080 job-list.txt

toggle_all
  Jenkins上にある全てのジョブのを有効/無効化します。

  例::

    $ domo toggle_all http://localhost:8080 enable
    $ domo toggle_all http://localhost:8080 disable

toggle
  Jenkins上にあるジョブのうち指定されたジョブを有効/無効化します。

  例::

    $ domo toggle http://localhost:8080 enable job-list.txt
    $ domo toggle http://localhost:8080 disable job-list.txt

clone
  Jenkinsから別のJenkinsへジョブ名一覧ファイルを元にをクローンします。

  例::

    $ domo clone http://localhost:8080 http://anotherhost:8080 job-list.txt

  ジョブ名の一覧はlistコマンドを実行結果を利用して作成できます。

  例(ジョブ名ファイル作成)::

    $ domo list http://localhost:8080 > job-list.txt


delete_all
  指定のJenkins上にある全てのJobを削除します。

  例(dryrunモード)::

    $ domo delete_all http://localhost:8080

  例(実際に実行)::

    $ domo delete_all http://localhost:8080 --dryrun false

delete
  指定のJenkins上にあるジョブのうち指定されたジョブを削除します。

  例(dryrunモード)::

    $ domo delete http://localhost:8080 job_list.txt

  例(実際に実行)::

    $ domo delete http://localhost:8080 job_list.txt --dryrun false

install
  指定のJenkinsに対してプラグイン一覧ファイルを元にプラグインをインストールします。
  プラグインファイルにはJenkinsの `インストール可能なプラグイン` ページにある
  チェックボックスのname属性値を1行毎に記述してください。

  例::

    $ domo install http://localhost:8080/ plugin_list.txt

*1:実装当時しらなかったというのもある