ひでメモ

プログラムについて勉強したことを書きます。たぶん。

iTerm2 の Profile 保存機能を使ってワンクリックで開発環境を立ち上げる

前置き

開発マシンをずっとスリープのまま使っていたらめちゃくちゃ重くなっていた(再起動したらめちゃくちゃ早くなってびっくりした)ことをきっかけに週一でマシンを再起動するようにしました。
そしたら、再起動の度に仮想マシン立ち上げて、ssh でログインしてコンテナ立ち上げて、別のタブで npm run watch して…
という作業が週一で発生するようになりました(今まではターミナルを開きっぱなしでした)

これらがめんどくさすぎるので自動化しました!

概要

iTerm2 の Profile 保存機能を使ってワンクリックで開発環境を立ち上げられるようにしました。

なお、仮想マシンMac へのログイン時に自動起動するようにスクリプトを登録しました(後述)

仮想マシンにログインして」と書いているのは私が Docker for Mac を使っておらず、Ubuntu仮想マシン上で Docker を動かしているからです。
なので、ちょっと特殊な環境ですが、逆に情報があまりないようなので参考になれば幸いです。

私の使用例

プロジェクトごとに以下の3タブを開くようにしました。(現状2セットあります)

  1. 仮想マシンにログイン後、プロジェクト直下まで移動して Docker コンテナを起動する。その後はプロジェクト直下でコマンドを叩く用においておく
  2. ファイルの変更を検知してフロントをビルドしてくるコマンドを実行
  3. ローカルのプロジェクト直下へ移動

設定しておけば上記の処理を自動で行いつつタブを開く操作がワンクリックでできます。

Profile の作成

「Preferences > Profiles」から Profile を作成できます。

iTerm2 の Profile 設定
※ ぼかしているのはプロジェクト名とかが入っているので念の為です
今回使用する主な設定項目は以下です。

  • Tags:タグをつけることで整理したり、タグ単位でまとめてタブを開くことができます。
  • Send Text at Start:ここに記載したコマンドをタブが開いた後に実行します。(Docker コンテナを起動したり、ssh でログインしたり)
  • Working Directory:作業ディレクトリが指定できます。上記のコマンドはこのディレクトリに移動した状態で実行してくれます。

Profile はコピーできるのでワンセット作ったら、コピーしてパスだけ変えるといったことでき便利です!
私も2セット目は1分くらいでできました!

以下はちょっと私が苦戦したことです。(iTerm2 はあまり関係ないです)

ssh でログイン後にコマンドを実行する + ssh 接続を保持する

結論から言うと-tオプションに続けてコマンドを入力するといけました!
(前述した通り自前の仮想マシンで Docker を動かしているので ssh する必要がありました)

以下のコマンドは192.168.50.10仮想マシンへログイン後
~/project_aというディレクトリに移動して
./vendor/bin/sail up -dというコマンドを実行します。

ssh 192.168.50.10 -t "cd ~/project_a ; ./vendor/bin/sail up -d ;  bash --login"

ここで私がつまずいたのは以下の2点です。ここがこの記事のメインです

このコマンド中では.bashrcなどは(おそらく)読み込まれないことに気づけませんでした。
sailコマンドはよく使うのでエイリアスを貼っていたのですがそれが読み込まれず手こずりました。
※ プロジェクトは Laravel Sail 環境です

次に、最後のbash --loginがないとコマンドが終わったらそのまま ssh 接続を終了してしまいますので、もしコマンド終わった後にログインしたままにしたいなら付与する必要があります。

保存した Profile をタグ単位でまとめて開く

タグでまとめてタブを開く

iTerm2 のアイコンを右クリックして「New Tab > Profileで設定したタグ名 > Open All」でタグ単位でまとめてタブを開くことができます。
プロジェクト単位でタグをつけておけば、ワンクリックで開発環境が立ち上がって、ディレクトリも指定の位置にいる、という状態になります!

開いている Profile の保存

command + shift + sで開いているタブの状態(開いている Profile?)を名前をつけて保存できます。
画像のメニューにある「Restore Arrangement」でそれが一気に復元できます。
今関わっているプロジェクトを全部まとめて保存しておく、とか良さそうですね。

仮想マシンをログイン時に自動起動する

以下のような起動スクリプトを書いてdocker-machine_up.commandのような名前で保存します。

cd ~/develop/docker
vagrant up

「システム環境設定 > ユーザとグループ > ログイン項目」に上記のスクリプトを登録すれば完了です。

感想

やはり自動化はエンジニアの本懐ですよね…(そうじゃない)
リモートのサーバに接続して、DB にログインした状態にするとかもできそうでいろいろ応用範囲が広そうです!