WebRTC Native Client Momo をCircleCI で自動ビルド

V
shiguredo
Published in
3 min readJun 18, 2019

WebRTC Native Client Momo はビルドが少なくとも 30 分以上かかることもあり自動化を諦めていたのですが、CircleCI で BuildKit が動くこと、macOS 版が OSS であれば 500 分ビルド時間がついてくることなどがあり、自動化してみました。

詳細はソース見てください。

BuildKit は以下を真似しました。

サクッと動いて感動です。

version: 2
jobs:
build_raspbian-stretch_armv7:
docker:
- image: docker:18.09.6
steps:
- checkout
- setup_remote_docker:
version: 18.09.3
- run:
command: apk add make bash git
- run:
command: DOCKER_BUILDKIT=1 NOTTY=1 NOMOUNT=1 make raspbian-stretch_armv7
working_directory: build
no_output_timeout: 2h

DOCKER_BUILDKIT=1 を利用してビルドしています

また、毎回ビルドしてると大変なので 1 日 1 回 22:00 にビルドするようにしてみました。

workflows:
version: 2
daily_build_workflow:
triggers:
- schedule:
cron: "0 13 * * *"
filters:
branches:
only:
- develop
jobs:
- build_raspbian-stretch_armv6
- build_raspbian-stretch_armv7
- build_ubuntu-18.04_armv8
- build_ubuntu-18.04_x86_64

これで OSS で利用できる 4 ワーカーを全力で回してビルドを確認できるようになりました。

macOS 版はリソースが少ないので毎週1回日曜日の 22:00 に自動ビルドするようにしました。定期ビルドがこんなに簡単にできて本当に楽ですね。

今後

artifacts を活用して、デイリービルドしたパッケージを提供する仕組みを追加していこうと思います。

--

--