定期的にCircleCIでのテストを実行するAWS Lambda Functionを書いた。

shokai/circleci-daily-build: kick CircleCI rebuild everyday

とくにソースコードの変更が無くても定期的にCIを実行しておきたい場合がある。
依存ライブラリを毎日全て最新版にアップデートしてテストするとか、スクレイピング対象のHTMLが変更されていたらすぐに気づきたい場合とか。


天気予報をスクレイピングで取ってくるライブラリを定期的に実行している様子。毎朝テストされて結果がSlackに通知される。




CircleCIにビルドを頼む


CircleCIにはAPIがあるので外部からビルドを要請できる。
https://circleci.com/account/api でAPIキーを取得して使う。

curlとかでやってもいいんだけど、circleciというnpmを使うと2,3行書くだけで指定したプロジェクトのテストを実行できる。


AWS LambdaからCircleCIにビルドを頼む


新横浜Twitter botをAWS Lambdaとcoで作ったに書いたneoyokohama-botをテンプレとして使った。
我ながらわりとよく出来ていてsrc/以下だけ入れ替えたら完成した。


これをgit cloneして
https://github.com/shokai/circleci-daily-build

設定ファイルを作って中身を書く
% cp sample.env .env
% cp sample.project-list.json project-list.json


ビルドする
% npm install
% npm run build
% npm test # ログイン情報が正しいかとか
% npm start # ローカルで動かしてみる


zipを作って
% npm run zip

lambdaにアップロードして、イギリス時間で1時(日本で10時)にテスト実行するようにしておいた。