生産性向上ブログ

継続的な生産性向上を目指すエンジニアのためのブログ

VersionEyeの情報をSlackに投稿するnpmパッケージを作成しました

概要

VersionEyeの情報をSlackに投稿するnpmパッケージを作成したので、それについて解説します。

VersionEyeとは

VersionEyeは、GitHub上のプロジェクトが依存するライブラリ更新を支援するサービスです。

www.versioneye.com

プロジェクトが依存するライブラリに対して、最新バージョンの通知、セキュリティチェック、ライセンスチェックを行ってくれます。依存ライブラリを継続的に更新することによって変更の粒度が小さくなり、容易に変更への迅速な対応が可能になります。

同種のサービスとしては、gemnasiumDavidなどがありますが、VersionEyeはサポートしているパッケージマネージャの豊富さが魅力的です。

  • Composer (PHP)
  • Bundler (Ruby)
  • PIP (Python)
  • NPM (Node.JS)
  • Bower (JavaScript)
  • CocoaPods (Objective-C)
  • Maven (Java)
  • SBT (Scala)
  • Gradle (Groovy)
  • Leiningen (Clojure)
  • Nuget (Microsoft .NET platform)
  • Biicode (C/C++)
  • Berkshelf (Chef)

プライベートリポジトリ1つと公開ポジトリ4つまで無料で使えます。

versioneye-slack

VersionEyeから依存ライブラリの状態を教えてくれる通知がメールではくるのですが、残念ながらSlack連携が現時点では用意されていません。開発チーム全体に共有されるところに通知を投げたいので、Slackに投稿するためのツールをnpmパッケージで作成しました。

www.npmjs.com

コマンドラインツールとして実装しているので、使い方は簡単です。

$ npm install versioneye-slack -g

でインストールして、

$ versioneye-slack project <projectName> --versioneye-api-key <key> --slack-webhook-url <url>

で↓のような投稿がSlackに飛びます。

f:id:miya-jan:20170106152609p:plain

VersionEyeのAPIキーとSlackのWebhook URLは環境変数でも渡せるようにしていて、それぞれ VERSIONEYE_API_KEYSLACK_WEBHOOK_URL--versioneye-api-key--slack-webhook-url に対応しています。

CLIだけでなく、プログラム上からでも呼び出せます。

const VersionEyeSlack = require('versioneye-slack');
 
const versioneyeApiKey = '<api key for versioneye>';
const slackWebhookUrl = '<webhook url for slack>';
const versioneyeSlack = new VersionEyeSlack(versioneyeApiKey, slackWebhookUrl);
versioneyeSlack.postProjectSummary('project name').then(response => {
    console.log(response);
});

versioneye-api-client

versioneye-slackは、VersionEye公式のAPIを叩いています。

www.versioneye.com

Node.jsからVersionEyeのAPIを叩くためのクライアントライブラリもnpmパッケージとして作成したので、VersionEyeのAPIで遊びたい方はお使いください。

www.npmjs.com

まとめ

VersionEyeと自分が作成したSlack連携するためのnpmパッケージについて紹介しました。

npmパッケージは初めて公開しましたが、作成から公開までかなり簡単でよかったです。コマンドラインツールを手軽に作るにはかなりよい選択肢だと思いました。

VersionEyeあまり話題になっているのを見かけませんが、依存関係の更新を放置すると大きなトラブルになりがちなので、継続的にアップデートしていくための土台づくりとしてこの手のサービスがもっと盛り上がってほしいです。