pre-commitを利用してCircleCIのConfig Validateを楽に済ませてみる
circleci cliによるconfig validateを意識せずとも忘れないようにしたいため、pre-commit hookに取り入れてみました。
はじめに
CircleCIのconfigファイルを編集した場合に、確実に行いたいのがcircleci config validate
コマンド。実際には編集した後の安堵感からすっかり忘れがちです。
commitする前迄に行えれば問題ないとすると、pre-commit hookに混ぜてしまえば悩みも無くて一番良さそうです。手軽く手堅く設定するため、Python製のpre-commitを用いて試してみました。
CircleCI CLI用の設定
.pre-commit-config.yaml
へ以下の設定を追記するだけで完了です。
- repo: local hooks: - id: circleci_config_validate name: circleci_config_validate entry: circleci config validate language: python_venv types: [file]
失敗をキャッチできるか確認するため、circleciの設定ファイルに手を加えた状態でコミットしてみます。
% git add .circleci/config.yml % git commit [WARNING] Unstaged files detected. [INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks. [INFO] Initializing environment for local. [INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... [INFO] Installing environment for local. [INFO] Once installed this environment will be reused. [INFO] This may take a few minutes... Trim Trailing Whitespace.................................................Passed Fix End of Files.........................................................Passed Check Yaml...............................................................Passed Check for added large files..............................................Passed circleci_config_validate.................................................Failed - hook id: circleci_config_validate - exit code: 255 Error: Config does not conform to schema: {:workflows {:cicd_pipeline {:jobs [{:test {:python-version disallowed-key}}
意図通りの結果になりました。
あとがき
コミット時に少し時間がかかりますが、fix typo
のコミットが大量に積まれるよりはよいかなと思います。
今回はvalidateのみ行っていますが、必要に応じてcircleci update check
も含める等、より手軽く手堅くする方法を加えてみるのも良いかもしれません。