tl;dr;
前置き:ItamaeのCIの式年遷宮の歴史
僕がコミッタになる前はWercker + Vagrant + DigitalOceanを利用
僕とうなすけさん( id:yu_suke1994 )がコミッタになったタイミングでTravis CI( travis-ci.org ) + Dockerに移行
先日うなすけさんが travis-ci.com に移行
移行のモチベーション
Itamaeのリポジトリでは週1のweekly buildを実行してるのですが、1回辺りのビルド時間が長くて無料枠のクレジットを使い切ったためです
https://docs.travis-ci.com/user/billing-faq/#what-if-i-am-building-open-source を読むとOSSなら無料でクレジットを付与するのでメールしてねって書いてるので連絡したのですが、1週間以上経っても返事がこなかったので諦めてGitHub Actionsに移行しました。
メール送った直後にzendeskからの自動返信メールが届いたので向こうに届いてないってことはないはずなんだけどなぁ。。。(もちろんTravisからのメールが迷惑メールに振り分けられてもないです)
ハマったこと
ItamaeのCIだと docker run -d
で起動したコンテナに対してItamaeを実行しているのですが、Itamae実行中にtmpディレクトリの中身が消えたりファイルが作れないという事象のせいでビルドがコケる現象が頻繁に発生してました。
代表例はこれ。/tmp/itamae_tmp/
が存在しなくてエラーになってそうなんだけど、Itamaeの処理の冒頭で /tmp/itamae_tmp/
を作ってるのにそうはならんやろ。。。
INFO : execute[echo -n 3 >> /tmp/subscribes] executed will change from 'false' to 'true' ERROR : stderr | mkdir: cannot create directory '/tmp/itamae_tmp/1613488120.203623': No such file or directory ERROR : Command `mkdir /tmp/itamae_tmp/1613488120.203623` failed. (exit status: 1) ERROR : remote_file[/tmp/remote_file] Failed.
https://github.com/sue445/itamae/runs/1911563358?check_suite_focus=true
/tmp
がおかしそうというのはあたりがついてたのでパーミッション変えてみたりホスト側から /tmp
をmountしてみたりと色々やってみたのですが、最終的には https://github.com/itamae-kitchen/itamae/pull/335/commits/69d6dfb13688609cfd96193122ae173b7c712da6 で解決しました。
良かったこと
- GitHub Actionsの並列数で殴る構成にしたので1回あたりのビルド時間が7分から3~4分になった