CI/CD変数
CI/CD変数を使用して、Auto DevOpsドメインを設定したり、カスタムHelmチャートを提供したり、アプリケーションをスケールすることができます。
ビルドおよびデプロイメント変数
これらの変数を使用して、ビルドをカスタマイズしてデプロイします。
| 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 | ビルド環境(buildpackビルダーまたは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 Chart。GitLabによって提供されるものにデフォルト設定されます。 |
AUTO_DEVOPS_CHART_REPOSITORY | チャートを検索するために使用されるHelm Chartリポジトリ。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 | 空でない値に設定すると、Helmコマンドに--insecure-skip-tls-verify引数が追加されます。デフォルトでは、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がデフォルトです。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_VOLUMES | 1つ以上の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_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変数 | 説明 |
|---|---|
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 Chartリポジトリ。https://raw.githubusercontent.com/bitnami/charts/eb5f9a9513d987b519f0ecd732e7031241c50328/bitnamiがデフォルトです。 |
POSTGRES_CHART_VERSION | PostgreSQLチャートに使用されるHelm Chartバージョン。8.2.1がデフォルトです。 |
ジョブスキップ変数
これらの変数を使用して、特定の種類のCI/CDジョブをスキップします。スキップされた場合、CI/CDジョブは作成または実行されません。
| ジョブ名 | 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変数を検出し、デプロイされたアプリケーションに環境変数として利用可能にします。
前提条件:
- 変数の値は単一行である必要があります。
シークレット変数を設定するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > CI/CDを選択します。
- 変数を展開します。
K8S_SECRET_のプレフィックスを持つCI/CD変数を作成します。たとえば、K8S_SECRET_RAILS_MASTER_KEYという変数を作成できます。- 新しいパイプラインを手動で作成するか、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スクリプティング環境の制限によりサポートされていません。
レプリカ変数の設定
デプロイをスケールする場合は、レプリカ変数を追加します:
プロジェクトCI/CD変数としてレプリカ変数を追加します。
アプリケーションをスケールするには、再デプロイします。
Kubernetesを直接使用してアプリケーションをスケールすることは避けてください。Helmが変更を検出しない可能性があり、その後のAuto DevOpsによるデプロイで変更が元に戻される可能性があります。
カスタムレプリカ変数
<TRACK>_<ENV>_REPLICASの形式でカスタムレプリカ変数を作成できます:
<TRACK>は、Helm Chartアプリケーション定義で設定された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_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_MODEをmanualに設定することで有効にできます。
INCREMENTAL_ROLLOUT_MODEをmanualに設定すると、GitLabは4つの手動ジョブを作成します:
rollout 10%rollout 25%rollout 50%rollout 100%
このパーセンテージはREPLICAS CI/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_MODE CI/CD変数をtimedに設定することで有効にできます。
INCREMENTAL_ROLLOUT_MODEをtimedに設定すると、GitLabは4つのジョブを作成します:
timed rollout 10%timed rollout 25%timed rollout 50%timed rollout 100%
ジョブ間に5分間の遅延があります。



