開発環境構築スクリプトのCIをGitHub Actionsで回す

小ネタですが、開発環境の構築はスクリプト化して、CIを回そうという話です。

開発環境を構築することは年にそう何回もあるわけではないですが、スクリプトを一発叩いて必要なツールが揃うようにしておくと便利です。私は素朴にシェルスクリプトで書いています。好きな言語で書けばいいと思いますが、macOSは将来的にRubyやPythonといったスクリプト言語を排除しようとしていて、不安ですね。Ansibleみたいなのを使ってもいいと思います。私はちょっと苦手で…

あくまで私用のスクリプトなので使わないでください。

このスクリプトを叩いてしまえば、iTerm2やVim、tmux、自分のdotfilesの配置と言語処理系のインストール、Google ChromeやSlackのインストールを行ってくれます。モダンなプロジェクトならdockerさえあればいいんでしょうが、なかなかそういうわけにはいかないですよね。

この環境構築スクリプトを作り始めてから、普段使っている自作cliツールのHomebrewルールをきちんと書くようになりました。当初は環境セットアップ時にもビルドすればいいのではと思っていたのですが、コンパイルに時間のかかる言語だとセットアップにも時間がかかってしまうので、やはりGitHub Releasesからビルド済みのバイナリを落としてくるだけのほうが構築時は楽ですね。

あと、dotfilesでbootstrap的なことをやるのはあまりおすすめしません。もともとdotfilesを配置してzshを叩けば色々とプラグインをとってくるみたいな処理を.zshrcに書いていたのですが、環境構築のスクリプトを作ったらそちら側にまとめられますし、一度セットアップしたらプラグインディレクトリのチェックなどは不要になるので、rcファイルは大幅に削減できました。

環境構築スクリプトを育てていると、どうしても今のPCの環境には適用できるけれど実は新規PCには適用できなくなっているということは起きてしまいます。まっさらな状態からセットアップすることはめったにありませんからね。具体的にはディレクトリのないところにsymlinkを貼るとか、セットアップの前の方で入れているツールを後の方で使っているのだけどPATHが通っていないとか、そういうケースです。

そこでCIを回しましょうという話です。最近、GitHub Actionsのmacos-latestでCIを回すようになりました。実際にCIを回したら、必要なディレクトリを作るのを忘れていたり、諸々通らないことが発覚しました。

CIを回すと、環境構築にかかるおよその時間がわかります。もちろんスペックの違いや、GitHubとのレイテンシの違い (Actionsはcloneが異常に速い) などもありますが、概ね20分でセットアップが完了するようです。一つコマンド叩けば概ね普段の環境が立ち上がるのはやはり良いですね。

おしまい