Start Building for Free
CircleCI.comアカデミーブログコミュニティサポート

環境変数の設定

2 months ago1 min read
クラウド
Server 3.x
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:
      - run:
          name: Update PATH and Define Environment Variable at Runtime
          # Add source command to execute code and make variables
          # available in current step.
          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: 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

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

ジョブで環境変数を設定するには、 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

コンテキストでの環境変数の設定

  1. CircleCI Web アプリで、Organization Settings を開きます。

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

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

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

    version: 2.1
    
    workflows:
      test-env-vars:
        jobs:
          - build:
              context: my_context_name # has an env var called MY_ENV_VAR
    
    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 context"
              command: |
                echo $MY_ENV_VAR

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

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

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

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

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

  4. .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

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

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

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

version: 2.1

jobs:
  build:
    docker:
      - image: <image>:<tag>
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
        # 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: <image>:<tag>
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
        environment:
          MY_ENV_VAR_1: my-value-1
          MY_ENV_VAR_2: my-value-2
      - image: <image>:<tag>
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference
        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

ドキュメントの改善にご協力ください

このガイドは、CircleCI の他のドキュメントと同様にオープンソースであり、 GitHub でご利用いただけます。 ご協力いただき、ありがとうございます。

サポートが必要ですか

CircleCI のサポートエンジニアによる、サービスに関する問題、請求およびアカウントについての質問への対応、設定の構築に関する問題解決のサポートを行っています。 サポートチケットを送信して、CircleCI のサポートエンジニアにお問い合わせください。日本語でお問い合わせいただけます。

または、 サポートサイト から、サポート記事やコミュニティフォーラム、トレーニングリソースをご覧いただけます。