やる気駆動型エンジニアの備忘録

WPF(XAML+C#)の話題を中心に.NET/Android/CI やたまに趣味に関するブログです

Circle CI でErogoDox EZ のキーマップをビルドする

1年と少し前から使い始めたErgoDox EZ ですが、少しキーマップを変えたいなと思いました。 しかし、時間が経過しすぎて前回ビルドしたBash on Ubuntu on Windows も環境ごとOS をクリーンインストールしていました。

ちなみに前回のビルドでハマったところは以下にまとめています。

iyemon018.hatenablog.com

時代は2019年
もうそろそろCI サービスでも使って自前で環境構築なんかしたくないと思い、せっかくなので触ったことのないCircle CI を使ってみました。 また、今回はDocker を使用してビルドします。 私はDocker も触ったことが無いのでこの方法が正しいかどうかは自身がありません。。。

なお、この方法は2019年01月24日時点のものです。時間が経過すると同じ方法ではビルドできない可能性がありますのであしからず。

取り敢えずやりたいことはこんな感じです。

  • リポジトリGitHub にあるものを使用する
  • キーマップファイルは手元のWindows 環境で編集する
  • Circle CI を使用して自動ビルドする
  • ついでにArtifacts から .hex ファイルをダウンロードできるようにする

下準備

まずは以下のqmk_firmware のGitHub リポジトリをFork しておきます。

github.com

つぎにCircle CI でFork したプロジェクトをビルドできるように設定します。 取り敢えず環境はLinux にしました。 .yml ファイルは後ほど作成するので、まずは"Start building"でビルドの設定を完了させます。

Cicle CI でビルド

Fork したqmk_firmware をローカル環境にクローンします。 クローンは割と時間がかかるのでしばらく待ちます。 クローンできたら次は.circleci フォルダにconfig.yml ファイルを作成します。

ちなみにWindows 環境では拡張子のみの表記であるフォルダ名(".circleci"みたいな)を普通に設定することができません。 このようなフォルダは以下の方法で作成します。

  1. 新規フォルダを作成する
  2. フォルダ名を編集する
  3. フォルダ名は".circleci."(末尾に"."があること)とする
  4. あとはEnter を入力すると末尾の"."が自動的に除外される

さて、config.yml を編集します。

ErgoDox EZ のキーマップをCircle CI でビルドするための設定ファイル

キーマップのビルドにはDocker を使用します。 ローカル環境でビルドする場合は"make ~~"とかしてたんですが、今はDocker のビルド スクリプトが存在します。 その方法がdocs/getting_started_build_tools.mdに記載されています。

 util/docker_build.sh keyboard:keymap 
 # For example: util/docker_build.sh ergodox_ez:steno

どうやら docker_build.sh にキーボードの種類とキーマップの種別を設定することでビルドしてくれるようです。便利! 上記のconfig.yml はこの方法を採用して書きました。

ビルドして試す

ビルド結果の .hex ファイルはこれまで通り .build フォルダに作成されます。 config.yml でも.build/ergodox_ez_default.hexファイルをArtifacts に設定しています。

あとはqmk_firmware/keyboards/ergodox_ez/keymaps/default/keymap.cファイルを編集してPush すると自動ビルドが実行されます。

f:id:iyemon018:20190124215859p:plain

こんな感じでArtifacts に .hex ファイルが追加されていれば完了です!

今回は初めてDocker とCircle CI を触りましたが、Circle CI はビルドするだけなら簡単にできます。 また、Docker についても予めスクリプトが用意されているため、予備知識無しでもビルドできました。

ローカルに環境を作ると少しキーマップを変えたいと思っても時間が経っていると環境どこだっけとなりやすいので、できるだけサービス側に丸投げしたいところです。 今回のようにCI サービスを利用されている方もちらほらいるようなので一度お試しあれ。