LoginSignup
1
1

More than 3 years have passed since last update.

CircleCIのWorkflowsでfiltersが効かないと思ったら微妙な?重要な?インデントの問題だった

Posted at

はじめに

先日CircleCIにようやく入門して、いろいろ設定を書いていたのですが、どうにも filters で branch指定がうまくいかない。なんでかなぁ、と思っていたらYAMLの書き方が悪かった(CircleCIのValidationエラーにもならない)という話でした。
なかなか不毛で気が付きにくい感じがあるので、ちょっと書き残しておきます。

本題

以下の2つの filters の位置をよく見てもらえれば全てです。

workflows:
  version: 2
  my-awesome-task:
    jobs:
      - hello-wrong:
        filters:
          branches:
            only: master

      - hello-correct:
          filters:
            branches:
              only: development

上記をYAMLパーサーがどういう解釈をするかというと、以下のようなJSONになります。

{
    "workflows": {
        "version": 2,
        "my-awesome-task": {
            "jobs": [
                {
                    "hello-wrong": null,
                    "filters": {
                        "branches": {
                            "only": "master"
                        }
                    }
                },
                {
                    "hello-correct": {
                        "filters": {
                            "branches": {
                                "only": "development"
                            }
                        }
                    }
                }
            ]
        }
    }
}

1つめの filtershello-wrong の子要素にならないんですね。
hello-wrongの兄弟の要素になって、hello-wrong Keyの Valueは nullになってます。
確かに、こういう意味を表したいときはあって、それならこう書くことになるのは自然で、言われてみれば納得なんですが、「私はそんなつもりで書いたんじゃない(涙)」という気分でした。

さいごに

CircleCIは間違ったKeyを指定するとValidatorが教えてくれることが多かったので、書式はあっているものと思い込んでいました(書いている内容が悪いと思っていた)。

JSONは設定を書くには野暮ったいですが、こういう間違いは起こりにくいですね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1