この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
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
も含める等、より手軽く手堅くする方法を加えてみるのも良いかもしれません。