🌊

ビルドやテストが失敗する状態でコミットしてしまわないようにする

2022/09/19に公開

こんにちは。shootaceanです。

個人開発を進める上で、ビルドやテストが失敗する状態なのにプッシュしてしまいCI/CDで失敗していたことに気づく、というのをやってしまったので、それを防ぐための仕組みをつくります。

やることはシンプルで、
git commit 前に自動的に npm run buildnpm run test を実行し、失敗した場合はコミットさせない、というものです。

それを実現するために husky を使い git pre-commitフックを設定します。

typicode/husky: Git hooks made easy 🐶 woof!
Git - Git フック

huskyをインストールする

$ npm i -D husky
$ npx husky-init && npm i

npx husky-init && npm i することで、.husky ディレクトリに git pre-coomit 時に実行されるシェルスクリプトが生成されます。

ビルドとテストが実行されるようにする

上記の手順で生成された .husky/pre-commitファイルに実行したいコマンドを追記するだけです。

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npm run build
npm run test

追記後、正常に設定できたかの確認をしましょう。
適当なファイルを修正してエラーが起きる状態でコミットをした際に、コミット出来ていなければOKです。

ちなみにエラーが発生した際はメッセージの最後に以下のような文言が表示されます。

...省略
husky - pre-commit hook exited with code 1 (error)
git exited with error code 1

まとめ

フィードバックサイクルは早ければ早いほど開発スピードが上がります。
プッシュ時の GitHub ActionsCircle CI で気づくよりも、手元のローカル環境で気付けるほうが早いので、ケアレスミスが多い方はぜひ試していただければと思います!

Discussion