🥷
ブランチ切り替え時にnpm run deployを自動実行
ゴール:ブランチ切り替え時にnpm run deployを自動実行する
バックエンドの開発をしていて、1時間以上経ってもフロントの動作が期待通りにならない・・・
同チームの方に相談したところ、「ここ最近修正しているので、npm run deploy したら直るかもです」と言われ、実施したところ直りました・・・
2度とこんな思いはしたくないので、npm run deploy を自動で叩きたいと思いました。
やってみた結果
必ずデプロイされるので確認の観点が1つ減り、開発者体験が向上しました。
(一瞬ブランチを切り替えたいだけの場合も、数秒待つ必要がありますが、、)
開発環境
- mac
- Vscode
- git hooks
やったこと
- vscodeのルート上に以下ディレクトリを作成
- .git/hooks/post-checkout
- chmod +x .git/hooks/post-checkout
実装
丸コピしてディレクトリだけ変えれば大丈夫です。
#!/bin/bash
# post-checkout hook
# 引数: $1=previous HEAD, $2=new HEAD, $3=flag (1=branch checkout, 0=file checkout)
# ブランチチェックアウト時のみ実行
if [ "$3" = "1" ]; then
echo "========================================"
echo "ブランチチェックアウト後の自動デプロイを開始..."
echo "========================================"
# プロジェクトルートディレクトリを取得
PROJECT_ROOT=$(git rev-parse --show-toplevel)
# フロントエンドディレクトリに移動してデプロイ実行
FRONTEND_DIR="$PROJECT_ROOT/front" ⬅︎ 定義変更してください
if [ -d "$FRONTEND_DIR" ]; then
echo "フロントエンドディレクトリに移動: $FRONTEND_DIR"
cd "$FRONTEND_DIR"
if [ -f "package.json" ]; then
echo "npm run deploy を実行中..."
npm run deploy
if [ $? -eq 0 ]; then
echo "========================================"
echo "自動デプロイが完了しました"
echo "========================================"
else
echo "========================================"
echo "デプロイでエラーが発生しました"
echo "========================================"
exit 1
fi
else
echo "========================================"
echo "package.json が見つかりません: $FRONTEND_DIR"
echo "========================================"
exit 1
fi
else
echo "========================================"
echo "ディレクトリが見つかりません: $FRONTEND_DIR"
echo "========================================"
exit 1
fi
else
echo "ファイルチェックアウトのため、デプロイをスキップします"
fi
おわりに
日々の小さいストレスは即座に解決していきたいですね。
Discussion