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

CI/CD変数

CI/CD変数を使用して、Auto DevOpsドメインを設定したり、カスタムHelmチャートを提供したり、アプリケーションをスケールすることができます。

ビルドおよびデプロイメント変数

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

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ビルド環境(buildpackビルダーまたは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 Chart。GitLabによって提供されるものにデフォルト設定されます。
AUTO_DEVOPS_CHART_REPOSITORYチャートを検索するために使用されるHelm Chartリポジトリ。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空でない値に設定すると、Helmコマンドに--insecure-skip-tls-verify引数が追加されます。デフォルトでは、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がデフォルトです。falseに設定すると、Ingressにこの代替ホストが設定されません。
AUTO_DEVOPS_DEPLOY_DEBUGこの変数が存在する場合、Helmはデバッグログを出力します。
AUTO_DEVOPS_ALLOW_TO_FORCE_DEPLOY_V<N>auto-deploy-image v1.0.0以降、この変数が存在する場合、チャートの新しいメジャーバージョンが強制的にデプロイされます。詳細については、警告を無視してデプロイを続行するを参照してください。
BUILDPACK_URL完全なBuildpack URL。PackがサポートするURLを指している必要があります。
CANARY_ENABLEDカナリア環境のデプロイポリシーを定義するために使用されます。
BUILDPACK_VOLUMES1つ以上のBuildpackボリュームをマウントするように指定します。パイプ|をリスト区切り文字として使用します。
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ステージングおよび本番環境のデプロイポリシーを定義するために使用されます。
TRACEHelmコマンドが詳細な出力を生成するように、任意の値に設定します。この設定を使用して、Auto DevOpsデプロイの問題を診断できます。

データベース変数

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

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

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 Chartリポジトリ。https://raw.githubusercontent.com/bitnami/charts/eb5f9a9513d987b519f0ecd732e7031241c50328/bitnamiがデフォルトです。
POSTGRES_CHART_VERSIONPostgreSQLチャートに使用されるHelm Chartバージョン。8.2.1がデフォルトです。

ジョブスキップ変数

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

ジョブ名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. 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
  2. 設定 > CI/CDを選択します。
  3. 変数を展開します。
  4. K8S_SECRET_のプレフィックスを持つCI/CD変数を作成します。たとえば、K8S_SECRET_RAILS_MASTER_KEYという変数を作成できます。
  5. 新しいパイプラインを手動で作成するか、codeコードの変更をGitLabにプッシュすることによって、Auto DevOpsパイプラインを実行します。

Kubernetes Secrets

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ポッド内ではイミュータブルです。アプリケーションシークレットを更新し、新しいパイプラインを手動で作成した場合、実行中のアプリケーションは更新されたシークレットを受け取りません。

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

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

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

レプリカ変数の設定

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

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

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

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

カスタムレプリカ変数

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

  • <TRACK>は、Helm Chartアプリケーション定義で設定された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_ENABLED CI/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%

このパーセンテージはREPLICAS CI/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_MODE CI/CD変数をtimedに設定することで有効にできます。

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

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

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