CircleCIのContextを利用すれば、同じ環境変数を複数のプロジェクトで参照できます。 このとき、複数のContextで同じ名前の環境変数を利用している場合にどうなるかを試してみました。
おすすめの方
- CircleCIで複数のContextで同じ名前の環境変数を利用している場合の動作を知りたい方
結論
後に指定したコンテキストの内容が優先されました。
試した後に気づきましたが、公式ドキュメントに記載がありました。
コンテキストは設定ファイルで指定された順に適用されるため、複数のコンテキストで同じ設定があった場合、後から指定されたコンテキストの設定内容が優先されます。
Contextを設定する
複数のContextを作成し、同じ名前の環境変数を作成します。
context | 環境変数の名前 | 環境変数の値 |
---|---|---|
development | env | dev |
production | env | prd |
context(その1)
context(その2)
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文字未満などの例外条件の場合は、マスキングされません。