正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

CI/CD変数

CI/CD変数を使用して、Auto DevOpsドメインをセットアップし、カスタムHelmチャートを提供するか、アプリケーションをスケールします。

ビルドおよびデプロイの変数

これらの変数を使用して、ビルドをカスタマイズおよびデプロイします。

CI/CD variable(CI/CD変数)説明
ADDITIONAL_HOSTSコンマ区切りのリストとして指定され、Ingressホストに追加される完全修飾ドメイン名。
<ENVIRONMENT>_ADDITIONAL_HOSTS特定の環境の場合、コンマ区切りのリストとして指定され、Ingressホストに追加される完全修飾ドメイン名。これは、ADDITIONAL_HOSTSよりも優先されます。
AUTO_BUILD_IMAGE_VERSIONbuildジョブに使用されるイメージバージョンをカスタマイズします。バージョンのリストを参照してください。
AUTO_DEPLOY_IMAGE_VERSIONKubernetesデプロイメントジョブに使用されるイメージバージョンをカスタマイズします。バージョンのリストを参照してください。
AUTO_DEVOPS_ATOMIC_RELEASEAuto DevOpsは、Helmデプロイメントで--atomicをデフォルトで使用します。この変数をfalseに設定して、--atomicの使用を無効にします
AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDERCloud Native Buildpacksでビルドするときに使用されるビルドツール。デフォルトのビルドツールはheroku/buildpacks:22です。詳細情報
AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGSdocker buildコマンドに渡される追加の引数。引用符を使用しても、ワード分割は防止されません。詳細情報
AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLESビルド環境(ビルドパックビルドツールまたはdocker build)に転送されるコンマ区切りのCI/CD変数名
AUTO_DEVOPS_BUILD_IMAGE_CNB_PORTGitLab 15.0以降では、生成されたDockerイメージによって公開されるポート。いずれのポートも公開しないようにするには、falseに設定します。5000がデフォルトです。
AUTO_DEVOPS_BUILD_IMAGE_CONTEXTDockerfileとCloud Native Buildpacksのビルドコンテキストディレクトリを設定するために使用されます。ルートディレクトリがデフォルトです。
AUTO_DEVOPS_CHARTアプリのデプロイに使用されるHelmチャート。GitLabによって提供されるデフォルトのHelmチャート。
AUTO_DEVOPS_CHART_REPOSITORYチャートの検索に使用されるHelmチャートリポジトリ。https://charts.gitlab.ioがデフォルトです。
AUTO_DEVOPS_CHART_REPOSITORY_NAMEHelmリポジトリの名前を設定するために使用されます。gitlabがデフォルトです。
AUTO_DEVOPS_CHART_REPOSITORY_USERNAMEHelmリポジトリに接続するためのユーザー名を設定するために使用されます。認証情報はデフォルトではありません。AUTO_DEVOPS_CHART_REPOSITORY_PASSWORDも設定します。
AUTO_DEVOPS_CHART_REPOSITORY_PASSWORDHelmリポジトリに接続するためのパスワードを設定するために使用されます。認証情報はデフォルトではありません。AUTO_DEVOPS_CHART_REPOSITORY_USERNAMEも設定します。
AUTO_DEVOPS_CHART_REPOSITORY_PASS_CREDENTIALSチャートアーティファクトがリポジトリとは異なるホスト上にある場合に、Helmリポジトリの認証情報をチャートサーバーに転送できるように、空でない値を設定します。
AUTO_DEVOPS_CHART_REPOSITORY_INSECURE--insecure-skip-tls-verify引数をHelmコマンドに追加するために、空でない値を設定します。デフォルトでは、HelmはTLS検証を使用します。
AUTO_DEVOPS_CHART_CUSTOM_ONLYカスタムチャートのみを使用するように、空でない値を設定します。デフォルトでは、最新のチャートがGitLabからダウンロードされます。
AUTO_DEVOPS_CHART_VERSIONデプロイメントチャートのバージョンを設定します。デフォルトでは、利用可能な最新バージョンに設定されます。
AUTO_DEVOPS_COMMON_NAMEGitLab 15.5以降では、TLS証明書に使用される共通名をカスタマイズするために、有効なドメイン名に設定します。le-$CI_PROJECT_ID.$KUBE_INGRESS_BASE_DOMAINがデフォルトです。Ingressでこの代替ホストを設定しないようにするには、falseに設定します。
AUTO_DEVOPS_DEPLOY_DEBUGこの変数が存在する場合、Helmはデバッグログを出力します。
AUTO_DEVOPS_ALLOW_TO_FORCE_DEPLOY_V<N>auto-deploy-image v1.0.0以降、この変数が存在する場合、チャートの新しいメジャーバージョンが強制的にデプロイされます。詳細については、警告を無視してデプロイを続行を参照してください。
BUILDPACK_URL完全なビルドパックURL。PackでサポートされているURLを指している必要があります
CANARY_ENABLEDカナリア環境のデプロイポリシーを定義するために使用されます。
BUILDPACK_VOLUMESマウントする1つ以上のビルドパックボリュームを指定します。リスト区切り文字としてパイプ|を使用します。
CANARY_PRODUCTION_REPLICAS本番環境のカナリアデプロイメント用にデプロイするレプリカの数。これは、CANARY_REPLICASよりも優先されます。デフォルトは1です。
CANARY_REPLICASカナリアデプロイメント用にデプロイするレプリカの数。デフォルトは1です。
CI_APPLICATION_REPOSITORYビルドまたはデプロイされるコンテナイメージのリポジトリ、$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG。詳細については、カスタムコンテナイメージをお読みください。
CI_APPLICATION_TAGビルドまたはデプロイされるコンテナイメージのタグ、$CI_APPLICATION_REPOSITORY:$CI_APPLICATION_TAG。詳細については、カスタムコンテナイメージをお読みください。
DAST_AUTO_DEPLOY_IMAGE_VERSIONデフォルトブランチでのDASTデプロイメントに使用されるイメージバージョンをカスタマイズします。通常はAUTO_DEPLOY_IMAGE_VERSIONと同じである必要があります。バージョンのリストを参照してください。
DOCKERFILE_PATHビルドステージのデフォルトのDockerfileパスをオーバーライドすることを許可します
HELM_RELEASE_NAMEhelmリリース名をオーバーライドすることを許可します。単一のネームスペースに複数のプロジェクトをデプロイするときに、一意のリリース名を割り当てるために使用できます。
HELM_UPGRADE_VALUES_FILEhelm upgrade値ファイルがオーバーライドされるようにします。.gitlab/auto-deploy-values.yamlがデフォルトです。
HELM_UPGRADE_EXTRA_ARGSアプリケーションのデプロイ時に、helm upgradeコマンドで追加オプションを使用できます。引用符を使用しても、ワード分割は防止されません。
INCREMENTAL_ROLLOUT_MODE存在する場合、本番環境のアプリケーションの段階的ロールアウトを有効にするために使用できます。手動デプロイメントジョブの場合はmanual、またはそれぞれ5分遅延する自動ロールアウトデプロイメントの場合はtimedに設定します。
K8S_SECRET_*K8S_SECRET_で始まる変数は、Auto DevOpsによって、デプロイされたアプリケーションへの環境変数として利用できるようになります。
KUBE_CONTEXTKUBECONFIGから使用するコンテキストを選択するために使用できます。KUBE_CONTEXTが空白の場合、KUBECONFIGのデフォルトのコンテキスト(存在する場合)が使用されます。Kubernetes用エージェントを使用する場合は、コンテキストを選択する必要があります。
KUBE_INGRESS_BASE_DOMAINクラスタごとにドメインを設定するために使用できます。詳細については、クラスタドメインを参照してください。
KUBE_NAMESPACEデプロイメントに使用されるネームスペース。証明書ベースのクラスタを使用している場合、この値を直接上書きしないでください
KUBECONFIGデプロイメントに使用するkubeconfig。ユーザーが指定した値は、GitLabが指定した値よりも優先されます。
PRODUCTION_REPLICAS本番環境にデプロイするレプリカの数。REPLICASよりも優先され、デフォルトは1です。ゼロダウンタイムのアップグレードの場合、2以上に設定します。
REPLICASデプロイするレプリカの数。デフォルトは1です。replicaCount変更する代わりに、この変数を変更します。
ROLLOUT_RESOURCE_TYPEカスタムHelmチャートを使用する場合に、デプロイされるリソースタイプ仕様を許可します。デフォルト値はdeploymentです。
ROLLOUT_STATUS_DISABLEDすべてのリソースタイプ(たとえば、cronjob)をサポートしていないため、ロールアウトステータスチェックを無効にするために使用されます。
STAGING_ENABLEDステージング環境と本番環境のデプロイポリシーを定義するために使用されます。
TRACE詳細な出力を生成するようにHelmコマンドを設定するための値に設定します。この設定を使用して、Auto DevOpsデプロイメントの問題を診断できます。

データベース変数

GitLab 16.0以降、POSTGRES_ENABLEDはデフォルトで設定されなくなりました。

これらの変数を使用して、CI/CDをPostgreSQLデータベースと統合します。

CI/CD variable(CI/CD変数)説明
DB_INITIALIZEアプリケーションのPostgreSQLデータベースを初期化するために実行するコマンドを指定するために使用されます。アプリケーションポッド内で実行されます。
DB_MIGRATEアプリケーションのPostgreSQLデータベースを移行するために実行するコマンドを指定するために使用されます。アプリケーションポッド内で実行されます。
POSTGRES_ENABLEDPostgreSQLが有効かどうか。trueに設定すると、PostgreSQLの自動デプロイメントが有効になります。
POSTGRES_USERPostgreSQLのユーザー名。userがデフォルトです。カスタムユーザー名を使用するように設定します。
POSTGRES_PASSWORDPostgreSQLパスワード。testing-passwordがデフォルトです。カスタムパスワードを使用するように設定します。
POSTGRES_DBPostgreSQLデータベース名。デフォルトは$CI_ENVIRONMENT_SLUGの値です。カスタムデータベース名を使用するように設定します。
POSTGRES_VERSION使用するpostgres Dockerイメージのタグ。テストとデプロイメントの場合、デフォルトは9.6.16です。AUTO_DEVOPS_POSTGRES_CHANNEL1に設定されている場合、デプロイメントはデフォルトバージョン9.6.2を使用します。
POSTGRES_HELM_UPGRADE_VALUES_FILEauto-deploy-image v2を使用する場合、この変数を使用すると、PostgreSQLのhelm upgrade値ファイルをオーバーライドできます。.gitlab/auto-deploy-postgres-values.yamlがデフォルトです。
POSTGRES_HELM_UPGRADE_EXTRA_ARGSauto-deploy-image v2を使用する場合、この変数を使用すると、アプリケーションのデプロイ時にhelm upgradeコマンドで追加のPostgreSQLオプションを使用できます。引用符を使用しても、ワード分割は防止されません。
POSTGRES_CHART_REPOSITORYPostgreSQLチャートの検索に使用されるHelmチャートリポジトリ。https://raw.githubusercontent.com/bitnami/charts/eb5f9a9513d987b519f0ecd732e7031241c50328/bitnamiがデフォルトです。
POSTGRES_CHART_VERSIONPostgreSQLチャートに使用されるHelmチャートバージョン。8.2.1がデフォルトです。

ジョブスキップ変数

これらの変数を使用して、特定のタイプのCI/CDジョブをスキップします。スキップすると、CI/CDジョブは作成または実行されません。

ジョブ名CI/CD variable(CI/CD変数)GitLabバージョン説明
.fuzz_baseCOVFUZZ_DISABLED.fuzz_baseが独自のジョブの機能を提供する方法の詳細については、こちらをお読みください。値が"true"の場合、ジョブは作成されません。
apifuzzer_fuzzAPI_FUZZING_DISABLED値が"true"の場合、ジョブは作成されません。
buildBUILD_DISABLED変数が存在する場合、ジョブは作成されません。
build_artifactBUILD_DISABLED変数が存在する場合、ジョブは作成されません。
brakeman-sastSAST_DISABLED値が"true"の場合、ジョブは作成されません。
canaryCANARY_ENABLEDこの手動ジョブは、変数が存在する場合に作成されます。
code_intelligenceCODE_INTELLIGENCE_DISABLED変数が存在する場合、ジョブは作成されません。
code_qualityCODE_QUALITY_DISABLED値が"true"の場合、ジョブは作成されません。
container_scanningCONTAINER_SCANNING_DISABLED値が"true"の場合、ジョブは作成されません。
dastDAST_DISABLED値が"true"の場合、ジョブは作成されません。
dast_environment_deployDAST_DISABLED_FOR_DEFAULT_BRANCHまたはDAST_DISABLED値が"true"の場合、ジョブは作成されません。
dependency_scanningDEPENDENCY_SCANNING_DISABLED値が"true"の場合、ジョブは作成されません。
flawfinder-sastSAST_DISABLED値が"true"の場合、ジョブは作成されません。
gemnasium-dependency_scanningDEPENDENCY_SCANNING_DISABLED値が"true"の場合、ジョブは作成されません。
gemnasium-maven-dependency_scanningDEPENDENCY_SCANNING_DISABLED値が"true"の場合、ジョブは作成されません。
gemnasium-python-dependency_scanningDEPENDENCY_SCANNING_DISABLED値が"true"の場合、ジョブは作成されません。
kubesec-sastSAST_DISABLED値が"true"の場合、ジョブは作成されません。
license_managementLICENSE_MANAGEMENT_DISABLEDGitLab 12.7以前変数が存在する場合、ジョブは作成されません。GitLab 12.8からのジョブは非推奨です
license_scanningLICENSE_MANAGEMENT_DISABLED値が"true"の場合、ジョブは作成されません。GitLab 15.9からのジョブは非推奨です
load_performanceLOAD_PERFORMANCE_DISABLED変数が存在する場合、ジョブは作成されません。
nodejs-scan-sastSAST_DISABLED値が"true"の場合、ジョブは作成されません。
performancePERFORMANCE_DISABLEDGitLab 13.12以前ブラウザのパフォーマンス。変数が存在する場合、ジョブは作成されません。browser_performanceに置き換えられました。
browser_performanceBROWSER_PERFORMANCE_DISABLEDブラウザのパフォーマンス。変数が存在する場合、ジョブは作成されません。performanceを置き換えます。
phpcs-security-audit-sastSAST_DISABLED値が"true"の場合、ジョブは作成されません。
pmd-apex-sastSAST_DISABLED値が"true"の場合、ジョブは作成されません。
reviewREVIEW_DISABLED変数が存在する場合、ジョブは作成されません。
review:stopREVIEW_DISABLED手動ジョブ。変数が存在する場合、ジョブは作成されません。
secret_detectionSECRET_DETECTION_DISABLED値が"true"の場合、ジョブは作成されません。
secret_detection_default_branchSECRET_DETECTION_DISABLED値が"true"の場合、ジョブは作成されません。
semgrep-sastSAST_DISABLED値が"true"の場合、ジョブは作成されません。
sobelow-sastSAST_DISABLED値が"true"の場合、ジョブは作成されません。
stop_dast_environmentDAST_DISABLED_FOR_DEFAULT_BRANCHまたはDAST_DISABLED値が"true"の場合、ジョブは作成されません。
spotbugs-sastSAST_DISABLED値が"true"の場合、ジョブは作成されません。
testTEST_DISABLED変数が存在する場合、ジョブは作成されません。
stagingSTAGING_ENABLED変数が存在する場合、ジョブが作成されます。
stop_reviewREVIEW_DISABLED変数が存在する場合、ジョブは作成されません。

アプリケーションシークレット変数を設定する

一部のデプロイされたアプリケーションでは、シークレット変数へのアクセスが必要です。Auto DevOpsはK8S_SECRET_で始まるCI/CD変数を検出し、環境変数としてデプロイされたアプリケーションで利用できるようにします。

前提要件:

  • 変数の値は1行である必要があります。

シークレット変数を設定するには、次のようにします:

  1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 設定 > CI/CDを選択します。
  3. 変数を展開します。
  4. プレフィックスK8S_SECRET_を持つCI/CD変数を作成します。たとえば、K8S_SECRET_RAILS_MASTER_KEYという変数を作成できます。
  5. 新しいパイプラインを手動で作成するか、コード変更をGitLabにプッシュして、Auto DevOpsパイプラインを実行します。

Kubernetesシークレット

Auto DevOpsパイプラインは、アプリケーションのシークレット変数を使用して、Kubernetesシークレットに入力された状態にします。このシークレットは環境ごとに一意です。アプリケーションのデプロイ時、シークレットは、アプリケーションを実行しているコンテナ内の環境変数として読み込まれます。例えば、K8S_SECRET_RAILS_MASTER_KEYという名前のシークレットを作成した場合、Kubernetesのシークレットは次のようになります:

$ kubectl get secret production-secret -n minimal-ruby-app-54 -o yaml

apiVersion: v1
data:
  RAILS_MASTER_KEY: MTIzNC10ZXN0
kind: Secret
metadata:
  creationTimestamp: 2018-12-20T01:48:26Z
  name: production-secret
  namespace: minimal-ruby-app-54
  resourceVersion: "429422"
  selfLink: /api/v1/namespaces/minimal-ruby-app-54/secrets/production-secret
  uid: 57ac2bfd-03f9-11e9-b812-42010a9400e4
type: Opaque

アプリケーションシークレットの更新

環境変数は通常、Kubernetesのポッド内でイミュータブルです。アプリケーションシークレットを更新し、手動で新しいパイプラインを作成した場合、実行中のアプリケーションは更新されたシークレットを受け取りません。

アプリケーションシークレットを更新するには、次のいずれかの方法を実行します:

  • GitLabにプッシュしてコードを更新し、Kubernetesのデプロイにポッドを再作成させます。
  • シークレットが更新された新しいポッドをKubernetesに作成させるために、実行中のポッドを手動で削除します。

複数行の値を持つ変数は、Auto DevOpsのスクリプト環境の制限によりサポートされていません。

レプリカ変数の設定

デプロイをスケールする場合は、レプリカ変数を追加します:

  1. プロジェクトCI/CD変数としてレプリカ変数を追加します。

  2. アプリケーションをスケールするには、再デプロイします。

    Kubernetesを直接使用してアプリケーションをスケールしないでください。Helmが変更を検出せず、後続のAuto DevOpsでのデプロイで変更が元に戻る可能性があります。

カスタムレプリカ変数

<TRACK>_<ENV>_REPLICASの形式で、カスタムレプリカ変数を作成できます:

  • <TRACK>は、Helmチャートアプリケーション定義で設定されたtrack Kubernetesラベルの大文字の値です。trackが設定されていない場合は、カスタム変数から<TRACK>を省略してください。
  • <ENV>は、.gitlab-ci.ymlで設定されたデプロイジョブのすべて大文字の環境名です。

たとえば、環境がqaで、トラックがfooの場合、FOO_QA_REPLICASという環境変数を作成します:

QA testing:
  stage: deploy
  environment:
    name: qa
  script:
    - deploy foo

トラックfooは、アプリケーションのHelmチャートで定義されている必要があります。次に例を示します:

replicaCount: 1
image:
  repository: gitlab.example.com/group/project
  tag: stable
  pullPolicy: Always
  secrets:
    - name: gitlab-registry
application:
  track: foo
  tier: web
service:
  enabled: true
  name: web
  type: ClusterIP
  url: http://my.host.com/
  externalPort: 5000
  internalPort: 5000

ステージング環境と本番環境のデプロイポリシー

Auto DevOpsは通常、継続的デプロイを使用し、デフォルトブランチで新しいパイプラインが実行されるたびに、production本番環境に自動的にプッシュします。本番環境に手動でデプロイするには、STAGING_ENABLEDCI/CD変数を使用できます。

STAGING_ENABLEDを設定すると、GitLabはアプリケーションをstagingステージング環境に自動的にデプロイします。本番環境にデプロイする準備ができたら、GitLabはproduction_manualジョブを作成します。

プロジェクト設定で手動デプロイを有効にすることもできます。

カナリア環境のデプロイポリシー

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

本番環境に変更をデプロイする前に、カナリア環境を使用できます。

CANARY_ENABLEDを設定すると、GitLabは2つの手動ジョブを作成します:

  • canary - アプリケーションをカナリア環境にデプロイします。
  • production_manual - アプリケーションを本番環境にデプロイします。

本番環境への段階的ロールアウト

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

段階的ロールアウトを使用して、少数のポッドから始めて、アプリケーションを継続的にデプロイします。ポッドの数は手動で増やすことができます。

プロジェクト設定で手動デプロイを有効にするか、INCREMENTAL_ROLLOUT_MODEmanualに設定します。

INCREMENTAL_ROLLOUT_MODEmanualに設定すると、GitLabは4つの手動ジョブを作成します:

  1. rollout 10%
  2. rollout 25%
  3. rollout 50%
  4. rollout 100%

パーセンテージはREPLICASCI/CD変数に基づいており、デプロイに使用されるポッドの数を定義します。たとえば、値が10で、10%ロールアウトジョブを実行すると、アプリケーションは1つのポッドにのみデプロイされます。

ロールアウトジョブは任意の順序で実行できます。スケールダウンするには、より低いパーセンテージのジョブを再実行します。

rollout 100%ジョブを実行した後、スケールダウンできず、デプロイをロールバックする必要があります。

段階的ロールアウト構成の例

INCREMENTAL_ROLLOUT_MODEなし、STAGING_ENABLEDなし:

段階的ロールアウトとステージングの両方が無効になっているCI/CDワークフローの可視化グラフ

INCREMENTAL_ROLLOUT_MODEなし、STAGING_ENABLEDあり:

段階的ロールアウトが無効でステージングが有効になっているCI/CDワークフローの可視化グラフ

INCREMENTAL_ROLLOUT_MODEmanualに設定し、STAGING_ENABLEDがない場合:

段階的ロールアウトが有効でステージングが無効になっているCI/CDワークフローの可視化グラフ

INCREMENTAL_ROLLOUT_MODEmanualに設定し、STAGING_ENABLEDがある場合:

段階的ロールアウトとステージングの両方が有効になっているCI/CDワークフローの可視化グラフ

本番環境への時間指定段階的ロールアウト

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

時間指定段階的ロールアウトを使用して、少数のポッドから始めて、アプリケーションを継続的にデプロイします。

プロジェクト設定で時間指定段階的デプロイを有効にするか、INCREMENTAL_ROLLOUT_MODECI/CD変数をtimedに設定します。

INCREMENTAL_ROLLOUT_MODEtimedに設定すると、GitLabは4つのジョブを作成します:

  1. timed rollout 10%
  2. timed rollout 25%
  3. timed rollout 50%
  4. timed rollout 100%

ジョブの間には5分間の遅延があります。