マルチステージGitLab CIパイプラインアーキテクチャ

適切なステージ順序、ジョブ依存関係、DAG最適化を備えたマルチステージGitLab CIパイプラインの設計。シンプルなリニアから複雑なファンアウト/ファンインパターンまで。

Pipeline Architecture

詳細な説明

マルチステージパイプラインアーキテクチャ

GitLab CIのステージはジョブグループの実行順序を定義します。適切に設計されたステージアーキテクチャは、速度(並列性)と正確性(依存関係の順序)のバランスを取ります。

DAGパイプラインとneeds

stages:
  - build
  - test
  - deploy

build_frontend:
  stage: build
  script: make build-frontend

build_backend:
  stage: build
  script: make build-backend

test_frontend:
  stage: test
  needs: [build_frontend]
  script: make test-frontend

test_backend:
  stage: test
  needs: [build_backend]
  script: make test-backend

deploy:
  stage: deploy
  needs: [test_frontend, test_backend]
  script: make deploy

ファンアウト/ファンイン

上記のDAGの例はファンアウト(ビルドがフロントエンドとバックエンドに分岐)とファンイン(デプロイが両方のテストジョブを待つ)を示しています。

ステージ設計ガイドライン

  1. ステージは粗粒度に: 3-5ステージが一般的。ステージが多すぎるとオーバーヘッドが増えます。
  2. 細粒度の依存関係にはneedsを使用: ステージ内のDAGパイプラインが最良の結果を提供します。
  3. 環境ごとにデプロイステージを分離: ステージングと本番は別のステージにし、本番には手動承認を設定します。

ユースケース

あらゆる非自明なプロジェクトにマルチステージパイプラインを使用します。ステージアーキテクチャはGitLabパイプラインビューでの視覚的な明確さを提供し、DAG依存関係は実行速度を最適化します。

試してみる — GitLab CI Config Generator

フルツールを開く