【開発環境】dotfilesでも継続的にインテグレーションする
今自宅で使っているMacBook Pro 15インチが2016 Lateです。
最近キーボードがチャタリングしたりして辛くなってきています。
当時価格、確か35万円とかで高いなと思いつつ買いましたが、今でも高いなと思っています。
しかし次回MacBook Proの発表があれば間髪を入れずにクレジットカードを切るでしょう。
(13インチに32GB RAM積めるようになってくれ🙏)
本題ですが、PCを変える時に開発環境変えますよね?
僕はずっとPCを買い換える時に開発環境をガバッと作り変えるのが恒例となっていて…普段個人開発環境もトレンドを追うのが面倒だったのでそうしていました。
ぶっ壊れていても結構パッチ当てて使い続けることが多かったです。 そのためここ2年ぐらいはIDEを好むようになりました。
JetBrainsのAll Product Packを買っています。
今回は、その定期的に作り変える慣例をなくすべくdotfilesの作り変えと継続的なインテグレーションを行おう!と思い至ったのでした。
でもなんで急に?
会社でもPCが貸与されるのですが、定期的に交換になります。 また仕事で使うので個人用のPCよりも稼働時間が長く定期的な交換以外で壊れてしまうことも度々ありました。
その際にPCの状態によってビルドができなかったり、 使っているライブラリが更新されていて依存性がぶっ壊れていたりで無限に時間を吸われていました。
普段IDEで開発しているのにそこまでする必要なくない?と思う方いますよね。
僕もそう思います。でもやります。
こいつが今鋭意製作中のリポジトリです。
開発環境の継続的インテグレーション
実際に使うのは以下のCIサービスです。
- circleci
- azure pipelines
二つ使うのには理由があります。 僕が高いお金を払いたくないからなのと、pipelinesをあまり知らないからです。 今後azureに寄せるかもしれません。
簡単に説明しておくと、両者とも Continuous Integration
を実現するためのサービスです。
他のサービスには JenkinsやTravis ciなどがあります。
単体テストやビルド、デプロイまでを自動でできるようにしてくれるすごいやつです。
普段は業務で circleciを使っているので、circleciが好きです。
Circle CI
使い勝手を知っているのでlinuxのdockerイメージでCIを回すように使っています。 仮に通知とかやりたくてもversion 2.1から使える orbで大抵のことができます。
AWS ECRなどを使っていてもいい感じにやってくれるので大好きです。 publicなレポジトリなら無料で使えます。お得(?)。
Azure Pipelines
macOSマシンのビルドがなんとタダで行えます。 普段はmacOSなので、こいつでビルドしないことにはどうしようもないですね。
ぜひ使いましょう、最高のサービスです。マイクロソフトさんありがとうございます!
どうやっているか
普段は Homebrew/brew ( LinuxならLinuxbrew)から各種パッケージを突っ込んでいるので、 そいつ起点でdotfilesを起こし始めました。
最低限のコマンドで、環境を再現できるようにしてビルド設定を書いています。
手元で docker.run
できるように自前で設定も書いていますが、CI設定は基本簡素になるようにしています。
azure pipelines
jobs: - job: macOS pool: vmImage: 'macOS-10.14' steps: - script: make install displayName: run install script
dotfiles/azure-pipelines.yml at master · paveg/dotfiles · GitHub
circleci
version: 2.1 default: &default working_directory: ~/repo executors: xenials: <<: *default docker: - image: linuxbrew/linuxbrew:latest environment: LANG: en_US.UTF-8 LC_ALL: en_US.UTF-8 LANGUAGE: en_US:en jobs: build: executor: xenials steps: - checkout - run: name: prepare command: sudo apt-get update && sudo apt-get install -y curl git bison - run: name: install dotfiles command: make install workflows: version: 2 test: jobs: - build
dotfiles/config.yml at master · paveg/dotfiles · GitHub
CIサービスの状態
これでビルドが走るようになりました。ログも見ることができます。 ただビルドに時間がかかるのでマッタリ確認します。
大体10-15分ぐらいのビルドです。 brewやbrew caskから様々なパッケージをダウンロードする部分はぶっちゃけ要らないかもしれないです。 今後見直せないかは考えていこうと思っています。
目標
とりあえず、開発環境の再現を30分〜1時間で終えられるようにしたいと思ってます。 zsh周りの設定が終わりつつあるので、neovim、tmuxを正しく使えるようにしてキーバインド整えて終わろうと思います。
シェルスクリプトを読んだり書いたりしまくってるのでtipsなんかを今後記事にするかもしれません。
すげー面倒臭いと思った方はぜひ、IDEを使ってください!