CircleCIのconfig.ymlのエラー対処方法 mapping values are not allowed here This configuration was auto-generated to show you the message above. Config Processing Error (Don’t rerun)

2020年6月9日CircleCI

CircleCIでconfig.ymlが原因でジョブがエラーになる

CircleCIを利用していると、ジョブが「Config Processing Error (Don’t rerun)」でエラーになることがあります。

例えばこんなエラーなど

# Unable to parse YAML
# mapping values are not allowed here
#  in 'string', line 102, column 18:
#               filters:
#                      ^
# 
# -------
# Warning: This configuration was auto-generated to show you the message above.
# Don't rerun this job. Rerunning will have no effect.
false
エラー原因

この手のエラーの原因は、config.ymlの記載誤りがほとんどです。

上記の例の場合、「line 102」とあるので、102行目の前後を確認してみましょう。

例えば、このような記載になっていたりしませんか?

workflows:
  version: 2
  build_and_deploy:
    jobs:
      - build  ←エラーが発生している箇所「:」がない!!
          filters:
            branches:
              only: develop

よくあるエラーのパターンとしては

  • 「:」がない
  • インデントが間違っている
  • 単純なスペルミス

などが多いです。

例の場合、「:」を付けて実行すると正常に動作します。

workflows:
  version: 2
  build_and_deploy:
    jobs:
      - build:
          filters:
            branches:
              only: develop

config.ymlの内容を効率よくチェックしたい

config.ymlの行数が少ない場合は、自力でチェックしても対処できるのですが、行数が多いと大変ですし、CircleCIのジョブ実行時に気づくという状況を避けたいです。

そんな時は、ローカル環境でcircleciのCLIコマンドでチェックしましょう。

 

CircleCIのCLIコマンドでチェックする

利用方法は簡単で、以下のコマンドでチェックできます。

利用方法

circleci config validate

これで、事前にチェックできるので、GitHubにpushしてからconfig.ymlのエラーで時間をとることもなくなります。

 

config.ymlに問題なしの場合の結果

Config file at .circleci/config.yml is valid.

「is valid」と表示されれば取り敢えず構文的には問題なしです!

 

config.ymlにエラーがある場合の結果

Error: ERROR IN CONFIG FILE:
[#/workflows/build_and_deploy] only 1 subschema matches out of 2
1. [#/workflows/build_and_deploy/jobs/7] 0 subschemas matched instead of one
|   1. [#/workflows/build_and_deploy/jobs/7] expected type: String, found: Mapping
|   |   SCHEMA:
|   |     type: string
|   |   INPUT:
|   |     deploy_back_prod:
|   |       filters:
|   |         branches: null
|   |         only: master
|   2. [#/workflows/build_and_deploy/jobs/7/deploy_back_prod/filters] extraneous key [only] is not permitted
|   |   Permitted keys:
|   |     - branches
|   |     - tags
|   |   Passed keys:
|   |     - branches
|   |     - only

エラー時は、CircleCIのページで表示されるエラー内容と同じものを確認することができます。

因みにこのエラーは以下のようにインデントを間違った場合です。

          filters:
            branches:
            only: master ←インデントが足りない

CircleCIのCLIのインストール方法(Windows)

LinuxやMacの場合は、CircleCIのCLIのページを見るとわかりやすいのですが、Windows用のインストーラーはぱっと見てわかりずらかったので、インストーラーの場所と手順を書いておきます。

 

Windows版 CircleCI CLIツールのダウンロード

CircleCIの手動でのダウンロードのページに「GitHub リリース」のリンクがあり、そこにWindows用のCLIツールもアップされています。

「circleci-cli_x.x.xxxx_windows_amd64.zip」のようにファイル名に「windows」を含むファイルをダウンロードします。

 

Windows版 CircleCI CLIツールのインストール

「circleci-cli_x.x.xxxx_windows_amd64.zip」ファイルを展開し、好きな場所に配置する。

どのプロジェクトからでも以下のようにコマンドを実行できるように、環境変数のpathに登録しておきましょう。

circleci config validate

 

CircleCI

Posted by snow