CircleCIの運用が少しだけ楽になりそうなツールを書いた #CircleCI

どうも、pom職人ならぬcircle.yml職人です。今日は最近イチオシのCircleCIネタです。

CircleCI(だけじゃなく最近のCIサービスはほとんどそうだが)は、Jenkinsみたいに任意のタイミングでジョブ実行!みたいな思想のCIツールではありません。

CircleCIのビルドのトリガーってGitHubへのpushやPullRequestです。まあGitHubとの親和性や、プルリクベースな開発を促進させるものなので当然っちゃ当然ですね。

ゆーても、Jenkins的な使い方を完全に捨てきるのはあまり現実的ではないでしょう。

ただし、REST APIは用意されていて、これを使えば任意のブランチのビルドを実行したり、ビルドパラメータを付与してあれやこれやとやったりできるようになります。これを上手く駆使すればJenkinsを捨てられそうですね。

とはいえ、毎度毎度curlAPIを叩くのは骨が折れます。

そこでよく実行しそうなAPIyamlにジョブとして定義しておいて、コマンドラインから都度パラメータを渡して実行できれば楽だなと思ったので、カッとなってgolangツールを書いてみました。

基本的にAPIをキックするだけなので、レスポンスのJSON見てどうのこうのするとかは今のところないです。まあhubot使ってChatOptsにCircleCIのAPI実行するのも素敵ですが、チャットが死んだら困っちゃうので(最近HipChatよく落ちるで!)こーいうのもいいかなと思っとります。

yamlで定義したジョブをpecoで補完できるようにすればさらに捗るかなー(まだやってないけど)。

ちなみに会社でCircleCI enterpriseの導入の準備を進めていて、なかなか面白いことになりそうなのですがまだまだ口外できないことが多いので、一通り落ち着いたらサイバーエージェントのエンジニアブログにでも書きましょう。