npmのパッケージに更新があったら自動でpackage.jsonを変更してプルリクを送ってくれるjenkinsのjobを作った。

npmのパッケージでアップデートがあったら自動で上げてプルリクエストを送ってくれるjenkins job · GitHub

上のものを保存したらjenkinsで以下の条件を整えます。

  • github enterpriseのURLを一番下の変数っぽいけどそうじゃないところに書く(元がハードコードだったので手抜き)
  • node 5.0をインストール
  • pythonが入っているか確認
  • npm install --save-dev npm-check-updates
  • git push origin ${ブランチ名}できるようにしておく
  • github tokenを用意する

実行は毎日or週1くらいで ./ncu.sh リポジトリ所有者名 リポジトリ名 GITHUBトークン を動作させるとプルリクが送られるようになります。

なぜかenterprise前提ですが普通のgithubでも使いまわせます (/api/v3 のあたりが違うので注意)

感想

github.com

というライブラリを利用したのでちょっと追加しただけ。

npm-check-updatesを入れると以下のことが出来ます。

  • ncu -uでpackage.jsonを更新
  • 除外や特定ライブラリのみ更新などの指定

なので、あとはgit checkoutしてadd, commitしてpushしてプルリク送るところを書いてやれば終わりです。

微妙にpython使っているのが気になるけど、json parseエラーが面倒だったのでまあいいかなという感じにしました。 だれかpythonレスにできたら(or pythonとかnode only?)教えて下さい。

最初はnodeでやろうとしたんだけどchild_process.exexSyncでncu呼ぶとエラーになってつらかった・・(´・_・`)