Edited at

「ライブラリーを上げようBOT」でバージョンアップに追随する健全な仕組み

More than 1 year has passed since last update.

ライブラリーは気がつかないうちに、新しいバージョンがリリースされていたりして取り残される。

バージョンアップ毎に毎回対応していれば良いのですが、一気に上げようとすると大抵動かなかったり、依存関係が壊れたりします。それで、ライブラリーのバージョンアップが上げられずにずっと放置されてしまうみたいなことありますよね。

ですが、プロジェクト内で使用している何百ものライブラリーのすべてのバージョンをチェックをするのは大変です。というか無理です。

なのでBOT化してバージョンアップ毎に小さく対応していける健全な開発を行いましょう。


SlackBotを作った

ということで、Slackに各ライブラリーの現在バージョンと最新のバージョンが流れてくるようにしました。

Artboard.png

対応してないと、毎週こいつが煽ってくる。


仕組み

node.jsの場合 npm outdated というコマンドが用意されており、

シェルスクリプトからSlackのWebhookに送っています。

npm install

outdated=`npm outdated`

if [ "${outdated}" = "" ] ; then
echo ok
exit
fi

# todo: webhookを取得して差し替えてください
WEBHOOKURL="https://hooks.slack.com/services/xxxxx/xxxxx/xxxxxxxxxxxxx"

curl -s -S -X POST --data-urlencode "payload={\"text\": \"*ライブラリー上げてなくない?*\r\n\`\`\`${outdated}\`\`\`\" }" ${WEBHOOKURL}

あとは、こいつをcronとかで回すだけ


Jenkinsに設定

自分の場合はCIにJenkinsを使っているので、Jenkinsに載っけました。

ビルドトリガーで定期的に実行

スクリーンショット 2017-07-18 10.13.42.png

毎日くるとウザいので、週1にしています。

GitのRepositoryと先程のシェルスクリプトを設定すれば勝手に流れてくるようになります。