CircleCIで複数のContextで同じ名前の環境変数を利用している場合の動作を確認してみた

複数のContextで同じ名前の環境変数を利用している場合は、あとから設定された値が優先されました。
2024.04.11

CircleCIのContextを利用すれば、同じ環境変数を複数のプロジェクトで参照できます。 このとき、複数のContextで同じ名前の環境変数を利用している場合にどうなるかを試してみました。

おすすめの方

  • CircleCIで複数のContextで同じ名前の環境変数を利用している場合の動作を知りたい方

結論

後に指定したコンテキストの内容が優先されました。

試した後に気づきましたが、公式ドキュメントに記載がありました。

コンテキストは設定ファイルで指定された順に適用されるため、複数のコンテキストで同じ設定があった場合、後から指定されたコンテキストの設定内容が優先されます。

Contextを設定する

複数のContextを作成し、同じ名前の環境変数を作成します。

context 環境変数の名前 環境変数の値
development env dev
production env prd

context(その1)

01_circleci_context

02_circleci_context

context(その2)

03_circleci_context

04_circleci_context

CircleCIの設定ファイル

「build1」と「build2」の2つのjobを実行します。 それぞれ、2つのcontextを利用しますが、順番が違います。

.circleci/config.yml

version: 2.1

executors:
  normal_container:
    docker:
      - image: cimg/python:3.11

jobs:
  build1:
    executor: normal_container
    steps:
      - checkout
      - run:
          name: build1
          command: |
            echo $env

  build2:
    executor: normal_container
    steps:
      - checkout
      - run:
          name: build2
          command: |
            echo $env

workflows:
  build_and_test:
    jobs:
      - build1:
          context:
            - development
            - production

      - build2:
          context:
            - production
            - development

CircleCIの実行結果

それぞれ、最後のcontextの環境変数が参照されました。

なお、環境変数が4文字未満などの例外条件の場合は、マスキングされません。

build1

11_circleci_dump_env

build2

12_circleci_dump_env

参考