公開:2025年5月27日

1分で読めます

GitLab入門:CI/CD変数を使用する

CI/CD変数の概要、DevSecOpsにおいてCI/CD変数が重要な理由、活用するためのベストプラクティスについてご紹介します。

「GitLab入門」シリーズへようこそ。このシリーズでは新たにGitLabを使い始める方向けに、GitLab DevSecOpsプラットフォームに慣れ親しむために役立つ内容をお届けします。

以前の記事で、GitLab CI/CDについて取り上げました。今回はCI/CD変数の世界をさらに深く掘り下げ、その力を最大限に引き出す方法について説明します。

CI/CD変数とは

CI/CD変数とは、GitLab環境内においてさまざまなレベル(プロジェクト、グループ、インスタンスなど)で定義できる動的なキーと値のペアのことです。.gitlab-ci.ymlファイルで使用できる値のプレースホルダーとして機能するため、パイプラインをカスタマイズしたり、機密情報を安全に保存したりできるほか、CI/CD設定を管理しやすくなります。

CI/CD変数が重要な理由

CI/CD変数の使用には、以下のような多くのメリットがあります。

  • 柔軟性 - 主要なCI/CDスクリプトに手を加えることなく、さまざまな環境、設定、またはデプロイ対象にパイプラインを簡単に適応させられます。
  • セキュリティ - API キー、パスワード、トークンのような機密情報を安全に保存して、コード内で直接公開されることのないようにします。
  • 保守性 - 変数の値を一元化することで、CI/CDの設定がきれいに整理された状態に保たれるため、更新や修正作業を簡単に行えます。
  • 再利用性 - 一度定義した変数は複数のプロジェクトで再利用できるため、重複が減り、一貫性を保ちやすくなります。

CI/CD変数のスコープ:プロジェクト、グループ、インスタンス

GitLabでは、次のようなさまざまなスコープでCI/CD変数を定義し、その可視性と有効範囲を制御できます。

  • プロジェクトレベルの変数 - 単一のプロジェクト専用の変数で、次のようなプロジェクト固有の設定を保存するのに適しています。

    • デプロイURL:ステージング環境や本番環境向けのURLをそれぞれ定義します。
    • データベース認証情報:テストやデプロイ用のデータベース接続情報を保存します。
    • 機能フラグ:パイプラインのさまざまな段階で機能を有効または無効にします。
    • 例:"MyWebApp"というプロジェクトがあり、本番環境へのデプロイURLを保存したいとします。その場合、プロジェクトレベルでDPROD_DEPLOY_URLという名前の変数を作成し、https://mywebapp.comという値を格納します。
  • グループレベルの変数 - グループレベルの変数を作成すると、GitLabグループ内の全プロジェクトで共有されます。次のような複数のプロジェクトに共通する設定がある場合に便利です。

    • 共有サービスのAPIキー:グループ内の複数のプロジェクトで使用されるサービス(AWS、Google Cloud、Docker Hubなど)のAPIキーを保存します。
    • グローバル構成設定:グループ内の全プロジェクトに適用される共通の設定パラメータを定義します。
    • 例:「Web Apps」というグループがあり、Docker Hub用にAPIキーを保存したいとします。その場合は、グループレベルでDOCKER_HUB_API_KEYという名前の変数を作成し、対応するAPIキーの値を格納します。
  • インスタンスレベルの変数 - GitLabインスタンスの全プロジェクトで利用可能な変数です。通常は、次のような組織全体に適用するグローバル設定がある場合に使用します。

    • デフォルトのRunner登録トークン:新規Runnerの登録時にデフォルトのトークンを提供します。
    • ライセンス情報:GitLabの機能やサードパーティツールのライセンスキー情報を保存します。
    • グローバル環境設定:全プロジェクトで利用可能な環境変数を定義します。
    • 例:GitLabインスタンス上の全プロジェクトにおいて、デフォルトのDockerイメージを設定したいとします。その場合、インスタンスレベルでDEFAULT_DOCKER_IMAGEという名前の変数を作成し、ubuntu:latestという値を格納します。

CI/CD変数を定義する

CI/CD変数は以下の手順で定義できます。

  1. プロジェクト、グループ、またはインスタンスで、設定 > CI/CDボタンの順にクリックします。
  2. 変数セクションに移動します。
  3. 変数を追加をクリックします。
  4. キー(例:API_KEY)とを入力します。
  5. 機密情報を扱う場合は、必要に応じて変数を保護ボックスをオンにします。オンにすると、保護ブランチまたは保護タグで実行されているパイプラインでのみ、変数が利用可能になります。
  6. 必要に応じて、変数をマスクボタンをオンにすると、ジョブログで変数の値が非表示になります。これにより、誤って公開されるのを防げます。
  7. 変数を保存をクリックします。

CI/CD変数を使用する

.gitlab-ci.ymlファイルでCI/CD変数を使用する方法は簡単です。変数名の前にプレフィックスとして$を付けるだけです。

deploy_job:
  script:
    - echo "Deploying to production..."
    - curl -H "Authorization: Bearer $API_KEY" https://api.example.com/deploy

定義済みのCI/CD変数

GitLabでは、パイプラインでご利用いただけるように、定義済みのCI/CD変数を一式ご用意しています。これらの変数は、現在のパイプラインやジョブ、プロジェクトなどに関する情報を提供します。

その中でも、使用されることの多い定義済み変数をいくつかご紹介します。

  • $CI_COMMIT_SHA:現在のパイプラインのコミットSHA。
  • $CI_PROJECT_DIR:プロジェクトの複製先のディレクトリ。
  • $CI_PIPELINE_ID:現在のパイプラインのID。
  • $CI_ENVIRONMENT_NAME:デプロイ先の環境名(該当する場合)。

ベストプラクティス

  • 機密性の高い変数は安全に管理する:APIキーやパスワード、その他の機密情報を扱う場合は、保護およびマスクされた変数を使用しましょう。
  • 値のハードコーディングは行わない:設定値を保存する際は変数を使用しましょう。そうすることで、パイプラインの柔軟性と保守性が高まります。
  • 変数を整理する:変数をわかりやすい名前を付けて、関連する変数をまとめると、うまく整理できます。
  • 適切なスコープを選ぶ:希望する変数の用途と可視性に基づいて、適切なスコープ(プロジェクト、グループ、またはインスタンス)を選びましょう。

変数の力を最大限に活用する

CI/CD変数は、GitLabパイプラインをカスタマイズし、保護するための強力なツールです。変数を使いこなし、各スコープを理解することで、より柔軟で保守しやすく、効率的なワークフローを作成できます。

開発プロジェクトにおいて、GitLabの機能を活用していただくために必要な情報をお届けしました。ご紹介した情報がお役に立てば幸いです。

Duo Enterpriseが搭載されたGitLab Ultimateの60日間無料トライアルに今すぐ申し込んで、CI/CD変数を早速ご利用ください。

「GitLab入門」シリーズ

「GitLab入門」シリーズのその他の記事もぜひご覧ください。

ご意見をお寄せください

このブログ記事を楽しんでいただけましたか?ご質問やフィードバックがあればお知らせください。GitLabコミュニティフォーラムで新しいトピックを作成して、ご意見をお聞かせください。

フォーチュン100企業の50%以上がGitLabを信頼

より優れたソフトウェアをより速く提供

インテリジェントなDevSecOpsプラットフォームで

チームの可能性を広げましょう。