Circle CIのcacheは先頭一致したkeyのcacheが使われる

たとえば以下の設定になっていたとします

- restore_cache:
    keys:
      - gem-cache-v1-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
      - gem-cache-v1-{{ arch }}-{{ .Branch }}
      - gem-cache-v1

https://circleci.com/docs/2.0/caching/#restoring-cache

どのようなルールでcacheが使われるかというと、上から順にkey名が先頭一致したcacheが使われます。 公式ドキュメントには以下のように書かれています。

CircleCI restores caches in the order of keys listed in the restore_cache step. Each cache key is namespaced to the project, and retrieval is prefix-matched. The cache will be restored from the first matching key. If there are multiple matches, the most recently generated cache will be used.

なので、 masterブランチで key名にgem-cache-v1-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}を指定していて、 他のブランチが、 key名に gem-cache-v1-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}-test を指定したcacheを作成したら、masterブランチは gem-cache-v1-{{ arch }}-{{ .Branch }}-{{ checksum "Gemfile.lock" }}-test のcacheを使ってしまう。気をつけましょう。