超絶簡単な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:実装当時しらなかったというのもある