環境変数の設定

1+ year ago1 min read
Last updated • Read time
クラウド
This document is applicable to CircleCI クラウド
Server 3.x
This document is applicable to CircleCI Server 3.x
Server 4.x
This document is applicable to CircleCI Server 4.x

CircleCI では、スコープや認可レベルに幅を持たせるために、環境変数の使用方法を複数提供しています。

シェルコマンドでの環境変数の設定

CircleCI では環境変数の設定時の挿入はサポートしていませんが、 BASH_ENV を使用して 現在のシェルに変数を設定することは可能です。 これは、 PATH を変更するときや、他の変数を参照する環境変数を設定するときに便利です。

version: 2.1

jobs:
  build:
    docker:
      - image: smaant/lein-flyway:2.7.1-4.0.3
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
    steps:
      - checkout
      - run:
          name: Run migrations
          command: sql/docker-entrypoint.sh sql
          # Environment variable for a single command shell
          environment:
            DATABASE_URL: postgres://conductor:@localhost:5432/conductor_test
          command: |
            echo 'export PATH=/path/to/foo/bin:"$PATH"' >> "$BASH_ENV"
            echo 'export VERY_IMPORTANT=$(cat important_value)' >> "$BASH_ENV"
            source "$BASH_ENV"

環境変数の設定についての詳細は、ご使用のシェルのドキュメントを確認してください。

ステップでの環境変数の設定

ジョブで環境変数を設定するには、 environment キー を使用します。

version: 2.1

jobs:
  build:
    docker:
      - image: cimg/base:2022.04-20.04
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
    environment:
      FOO: bar

ジョブでの環境変数の設定

ジョブで環境変数を設定するには、 environment キー を使用します。

version: 2.1

jobs:
  build:
    docker:
      - image: cimg/base:2022.04-20.04
    environment:
      FOO: bar

プロジェクトでの環境変数の設定

  1. CircleCI Web アプリで、プロジェクトの設定に移動します。

    Contexts
  2. 環境変数を関連付けるコンテキストを選択するか、Create Context ボタンをクリックして新しいコンテキストを作成します。

  3. Add Environment Variable をクリックし、名前と値を入力します。

  4. コンテキストが workflows キーの下に追加されたら、.circleci/config.yml で新しい環境変数を以下のように使用します。

    ersion: 2.1
    
    workflows:
      test-env-vars:
        jobs:
          - build
    
    jobs:
      build:
        docker:
          - image: cimg/base:2021.11
            auth:
              username: mydockerhub-user
              password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
        steps:
          - checkout
          - run:
              name: "echo an env var that is part of our project"
              command: |
                echo $MY_ENV_VAR # this env var must be set within the project

コンテキストを作成すると、複数のプロジェクト間で環境変数を共有すると共に、アクセス可能なユーザーを制御できるようになります。 コンテキストを使用して環境変数へのアクセスを制御する方法の詳細は、 コンテキストの制限を参照してください。

コンテナでの環境変数の設定

  1. CircleCI Web アプリで、プロジェクトの設定に移動します。 以下の 2 つの方法があります。: サイドナビゲーションの Projects に移動し、プロジェクトの行の省略符号ボタンをクリックする、またはプロジェクトの各Pipelines のページの Project Settings ボタンをクリックします。

    Environment Variables
  2. サイドナビゲーションの Environment Variables をクリックします。

  3. Add Variable をクリックして新しい環境変数の名前と値を入力します。

  4. .circleci/config.yml で、以下のように新しい環境変数を使用します。

    version: 2.1
    
    workflows:
      test-env-vars:
        jobs:
          - build
    
    jobs:
      build:
        docker:
          - image: cimg/base:2023.06
        steps:
          - checkout
          - run:
              name: "echo an env var that is part of our project"
              command: |
                echo $MY_ENV_VAR # this env var must be set within the project

作成された環境変数は、アプリケーションでは表示されず、編集することはできません。 環境変数を変更するには、削除して作成し直すしかありません。

コンテナでの環境変数の設定

環境変数は Docker コンテナにも設定することができます。 設定するには、 environment キー を使用します。

version: 2.1

jobs:
  build:
    docker:
      - image: cimg/base:2023.06
        # environment variables available for entrypoint/command run by docker container
        environment:
          MY_ENV_VAR_1: my-value-1
          MY_ENV_VAR_2: my-value-2

以下に、プライマリコンテナ イメージ (最初にリストされたイメージ) とセカンダリ (サービス) コンテナ イメージに、別々の環境変数を設定する例を示します。

version: 2.1

jobs:
  build:
    docker:
      - image: cimg/base:2023.06
        environment:
          MY_ENV_VAR_1: my-value-1
          MY_ENV_VAR_2: my-value-2
      - image: cimg/postgres:15.3.0
        environment:
          MY_ENV_VAR_3: my-value-3
          MY_ENV_VAR_4: my-value-4

複数行にわたる環境変数のエンコード

複数行の環境変数を追加する際に問題が発生した場合は、base64 を使用してエンコードします。

$ echo "foobar" | base64 --wrap=0
Zm9vYmFyCg==

結果の値を CircleCI 環境変数に格納します。

$ echo $MYVAR
Zm9vYmFyCg==

その変数を使用するコマンド内で変数をデコードします。

$ echo $MYVAR | base64 --decode | docker login -u my_docker_user --password-stdin
Login Succeeded