CI/CD変数
CI/CD変数を使用して、Auto DevOpsドメインをセットアップし、カスタムHelmチャートを提供するか、アプリケーションをスケールします。
ビルドおよびデプロイの変数
これらの変数を使用して、ビルドをカスタマイズおよびデプロイします。
| CI/CD variable(CI/CD変数) | 説明 |
|---|---|
ADDITIONAL_HOSTS | コンマ区切りのリストとして指定され、Ingressホストに追加される完全修飾ドメイン名。 |
<ENVIRONMENT>_ADDITIONAL_HOSTS | 特定の環境の場合、コンマ区切りのリストとして指定され、Ingressホストに追加される完全修飾ドメイン名。これは、ADDITIONAL_HOSTSよりも優先されます。 |
AUTO_BUILD_IMAGE_VERSION | buildジョブに使用されるイメージバージョンをカスタマイズします。バージョンのリストを参照してください。 |
AUTO_DEPLOY_IMAGE_VERSION | Kubernetesデプロイメントジョブに使用されるイメージバージョンをカスタマイズします。バージョンのリストを参照してください。 |
AUTO_DEVOPS_ATOMIC_RELEASE | Auto DevOpsは、Helmデプロイメントで--atomicをデフォルトで使用します。この変数をfalseに設定して、--atomicの使用を無効にします |
AUTO_DEVOPS_BUILD_IMAGE_CNB_BUILDER | Cloud Native Buildpacksでビルドするときに使用されるビルドツール。デフォルトのビルドツールはheroku/buildpacks:22です。詳細情報。 |
AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS | docker buildコマンドに渡される追加の引数。引用符を使用しても、ワード分割は防止されません。詳細情報。 |
AUTO_DEVOPS_BUILD_IMAGE_FORWARDED_CI_VARIABLES | ビルド環境(ビルドパックビルドツールまたはdocker build)に転送されるコンマ区切りのCI/CD変数名。 |
AUTO_DEVOPS_BUILD_IMAGE_CNB_PORT | GitLab 15.0以降では、生成されたDockerイメージによって公開されるポート。いずれのポートも公開しないようにするには、falseに設定します。5000がデフォルトです。 |
AUTO_DEVOPS_BUILD_IMAGE_CONTEXT | DockerfileとCloud Native Buildpacksのビルドコンテキストディレクトリを設定するために使用されます。ルートディレクトリがデフォルトです。 |
AUTO_DEVOPS_CHART | アプリのデプロイに使用されるHelmチャート。GitLabによって提供されるデフォルトのHelmチャート。 |
AUTO_DEVOPS_CHART_REPOSITORY | チャートの検索に使用されるHelmチャートリポジトリ。https://charts.gitlab.ioがデフォルトです。 |
AUTO_DEVOPS_CHART_REPOSITORY_NAME | Helmリポジトリの名前を設定するために使用されます。gitlabがデフォルトです。 |
AUTO_DEVOPS_CHART_REPOSITORY_USERNAME | Helmリポジトリに接続するためのユーザー名を設定するために使用されます。認証情報はデフォルトではありません。AUTO_DEVOPS_CHART_REPOSITORY_PASSWORDも設定します。 |
AUTO_DEVOPS_CHART_REPOSITORY_PASSWORD | Helmリポジトリに接続するためのパスワードを設定するために使用されます。認証情報はデフォルトではありません。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_NAME | GitLab 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_NAME | helmリリース名をオーバーライドすることを許可します。単一のネームスペースに複数のプロジェクトをデプロイするときに、一意のリリース名を割り当てるために使用できます。 |
HELM_UPGRADE_VALUES_FILE | helm 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_CONTEXT | KUBECONFIGから使用するコンテキストを選択するために使用できます。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_ENABLED | PostgreSQLが有効かどうか。trueに設定すると、PostgreSQLの自動デプロイメントが有効になります。 |
POSTGRES_USER | PostgreSQLのユーザー名。userがデフォルトです。カスタムユーザー名を使用するように設定します。 |
POSTGRES_PASSWORD | PostgreSQLパスワード。testing-passwordがデフォルトです。カスタムパスワードを使用するように設定します。 |
POSTGRES_DB | PostgreSQLデータベース名。デフォルトは$CI_ENVIRONMENT_SLUGの値です。カスタムデータベース名を使用するように設定します。 |
POSTGRES_VERSION | 使用するpostgres Dockerイメージのタグ。テストとデプロイメントの場合、デフォルトは9.6.16です。AUTO_DEVOPS_POSTGRES_CHANNELが1に設定されている場合、デプロイメントはデフォルトバージョン9.6.2を使用します。 |
POSTGRES_HELM_UPGRADE_VALUES_FILE | auto-deploy-image v2を使用する場合、この変数を使用すると、PostgreSQLのhelm upgrade値ファイルをオーバーライドできます。.gitlab/auto-deploy-postgres-values.yamlがデフォルトです。 |
POSTGRES_HELM_UPGRADE_EXTRA_ARGS | auto-deploy-image v2を使用する場合、この変数を使用すると、アプリケーションのデプロイ時にhelm upgradeコマンドで追加のPostgreSQLオプションを使用できます。引用符を使用しても、ワード分割は防止されません。 |
POSTGRES_CHART_REPOSITORY | PostgreSQLチャートの検索に使用されるHelmチャートリポジトリ。https://raw.githubusercontent.com/bitnami/charts/eb5f9a9513d987b519f0ecd732e7031241c50328/bitnamiがデフォルトです。 |
POSTGRES_CHART_VERSION | PostgreSQLチャートに使用されるHelmチャートバージョン。8.2.1がデフォルトです。 |
ジョブスキップ変数
これらの変数を使用して、特定のタイプのCI/CDジョブをスキップします。スキップすると、CI/CDジョブは作成または実行されません。
| ジョブ名 | CI/CD variable(CI/CD変数) | GitLabバージョン | 説明 |
|---|---|---|---|
.fuzz_base | COVFUZZ_DISABLED | .fuzz_baseが独自のジョブの機能を提供する方法の詳細については、こちらをお読みください。値が"true"の場合、ジョブは作成されません。 | |
apifuzzer_fuzz | API_FUZZING_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
build | BUILD_DISABLED | 変数が存在する場合、ジョブは作成されません。 | |
build_artifact | BUILD_DISABLED | 変数が存在する場合、ジョブは作成されません。 | |
brakeman-sast | SAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
canary | CANARY_ENABLED | この手動ジョブは、変数が存在する場合に作成されます。 | |
code_intelligence | CODE_INTELLIGENCE_DISABLED | 変数が存在する場合、ジョブは作成されません。 | |
code_quality | CODE_QUALITY_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
container_scanning | CONTAINER_SCANNING_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
dast | DAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
dast_environment_deploy | DAST_DISABLED_FOR_DEFAULT_BRANCHまたはDAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
dependency_scanning | DEPENDENCY_SCANNING_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
flawfinder-sast | SAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
gemnasium-dependency_scanning | DEPENDENCY_SCANNING_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
gemnasium-maven-dependency_scanning | DEPENDENCY_SCANNING_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
gemnasium-python-dependency_scanning | DEPENDENCY_SCANNING_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
kubesec-sast | SAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
license_management | LICENSE_MANAGEMENT_DISABLED | GitLab 12.7以前 | 変数が存在する場合、ジョブは作成されません。GitLab 12.8からのジョブは非推奨です |
license_scanning | LICENSE_MANAGEMENT_DISABLED | 値が"true"の場合、ジョブは作成されません。GitLab 15.9からのジョブは非推奨です | |
load_performance | LOAD_PERFORMANCE_DISABLED | 変数が存在する場合、ジョブは作成されません。 | |
nodejs-scan-sast | SAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
performance | PERFORMANCE_DISABLED | GitLab 13.12以前 | ブラウザのパフォーマンス。変数が存在する場合、ジョブは作成されません。browser_performanceに置き換えられました。 |
browser_performance | BROWSER_PERFORMANCE_DISABLED | ブラウザのパフォーマンス。変数が存在する場合、ジョブは作成されません。performanceを置き換えます。 | |
phpcs-security-audit-sast | SAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
pmd-apex-sast | SAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
review | REVIEW_DISABLED | 変数が存在する場合、ジョブは作成されません。 | |
review:stop | REVIEW_DISABLED | 手動ジョブ。変数が存在する場合、ジョブは作成されません。 | |
secret_detection | SECRET_DETECTION_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
secret_detection_default_branch | SECRET_DETECTION_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
semgrep-sast | SAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
sobelow-sast | SAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
stop_dast_environment | DAST_DISABLED_FOR_DEFAULT_BRANCHまたはDAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
spotbugs-sast | SAST_DISABLED | 値が"true"の場合、ジョブは作成されません。 | |
test | TEST_DISABLED | 変数が存在する場合、ジョブは作成されません。 | |
staging | STAGING_ENABLED | 変数が存在する場合、ジョブが作成されます。 | |
stop_review | REVIEW_DISABLED | 変数が存在する場合、ジョブは作成されません。 |
アプリケーションシークレット変数を設定する
一部のデプロイされたアプリケーションでは、シークレット変数へのアクセスが必要です。Auto DevOpsはK8S_SECRET_で始まるCI/CD変数を検出し、環境変数としてデプロイされたアプリケーションで利用できるようにします。
前提要件:
- 変数の値は1行である必要があります。
シークレット変数を設定するには、次のようにします:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > CI/CDを選択します。
- 変数を展開します。
- プレフィックス
K8S_SECRET_を持つCI/CD変数を作成します。たとえば、K8S_SECRET_RAILS_MASTER_KEYという変数を作成できます。 - 新しいパイプラインを手動で作成するか、コード変更を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のスクリプト環境の制限によりサポートされていません。
レプリカ変数の設定
デプロイをスケールする場合は、レプリカ変数を追加します:
プロジェクトCI/CD変数としてレプリカ変数を追加します。
アプリケーションをスケールするには、再デプロイします。
Kubernetesを直接使用してアプリケーションをスケールしないでください。Helmが変更を検出せず、後続のAuto DevOpsでのデプロイで変更が元に戻る可能性があります。
カスタムレプリカ変数
<TRACK>_<ENV>_REPLICASの形式で、カスタムレプリカ変数を作成できます:
<TRACK>は、Helmチャートアプリケーション定義で設定されたtrackKubernetesラベルの大文字の値です。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_MODEをmanualに設定します。
INCREMENTAL_ROLLOUT_MODEをmanualに設定すると、GitLabは4つの手動ジョブを作成します:
rollout 10%rollout 25%rollout 50%rollout 100%
パーセンテージはREPLICASCI/CD変数に基づいており、デプロイに使用されるポッドの数を定義します。たとえば、値が10で、10%ロールアウトジョブを実行すると、アプリケーションは1つのポッドにのみデプロイされます。
ロールアウトジョブは任意の順序で実行できます。スケールダウンするには、より低いパーセンテージのジョブを再実行します。
rollout 100%ジョブを実行した後、スケールダウンできず、デプロイをロールバックする必要があります。
段階的ロールアウト構成の例
INCREMENTAL_ROLLOUT_MODEなし、STAGING_ENABLEDなし:
INCREMENTAL_ROLLOUT_MODEなし、STAGING_ENABLEDあり:
INCREMENTAL_ROLLOUT_MODEをmanualに設定し、STAGING_ENABLEDがない場合:
INCREMENTAL_ROLLOUT_MODEをmanualに設定し、STAGING_ENABLEDがある場合:
本番環境への時間指定段階的ロールアウト
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
時間指定段階的ロールアウトを使用して、少数のポッドから始めて、アプリケーションを継続的にデプロイします。
プロジェクト設定で時間指定段階的デプロイを有効にするか、INCREMENTAL_ROLLOUT_MODECI/CD変数をtimedに設定します。
INCREMENTAL_ROLLOUT_MODEをtimedに設定すると、GitLabは4つのジョブを作成します:
timed rollout 10%timed rollout 25%timed rollout 50%timed rollout 100%
ジョブの間には5分間の遅延があります。



