パイプラインの持続可能性
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
このページで説明されているサステナビリティツールは、サードパーティのインテグレーションです。GitLabはこれらのツールの保守またはサポートを提供せず、これらのツールが規制またはコンプライアンス要件を満たすことを表明しません。
CI/CDパイプラインは、二酸化炭素排出量を生成する計算リソースを消費します。サードパーティツールをインテグレーションして、ソフトウェア開発ワークフローからのスコープ3排出量を測定および削減し、持続可能性レポートと規制コンプライアンスに対応できます。
スコープ3排出量は、サプライチェーンとベンダーからの間接排出量であり、CI/CDパイプラインを実行するクラウドインフラストラクチャを含みます。
持続可能性ツールをパイプラインにインテグレーションすることで、以下の利点が得られます:
- CI/CDインフラストラクチャからの二酸化炭素排出量を追跡し、レポートします。
- リソースを大量に消費するジョブと最適化の機会を特定します。
- Runnerの選択とジョブのスケジュール設定に関して、データに基づいた決定を行います。
- 持続可能性目標と規制要件を満たします。
排出量の測定
CI/CDパイプラインの排出量は、ジョブの実行に使用される計算リソースから発生します。二酸化炭素排出量は、CPU使用率、メモリ使用量、および実行時間からのエネルギー消費量によって異なります。また、二酸化炭素排出原単位(電気1単位あたりの二酸化炭素排出量を表し、地域や時間帯によって変化します)によっても異なります。クラウドプロバイダー、データセンターの場所、ハードウェアの効率性などのインフラストラクチャ要素も、全体的な影響に寄与します。
持続可能性ツールは、排出量を計算するためにさまざまなアプローチを使用します:
- 推定モデルは、CPU使用パターンと事前に計算された電力曲線に基づいてエネルギー消費量を計算します。
- 実際の測定では、クラウドプロバイダーのAPIを使用して、実際のリソース消費データを取得します。
- 炭素強度ルックアップは、Electricity Mapsなどのサービスをクエリすることで、地域の炭素係数や時間ベースの変動を適用します。
Eco CIで排出量を測定
Eco CIは、CI/CDパイプラインのエネルギー消費量と二酸化炭素排出量を測定します。これは、パイプラインジョブ内で軽量なbashスクリプトとして実行され、個別のサーバーやデータベースは必要ありません。
詳細については、Eco CIを参照してください。
ベストプラクティス
以下の戦略を考慮して、CI/CDパイプラインの二酸化炭素排出量を削減してください。
ジョブの実行を最適化
ジョブの実行を最適化するには:
- キャッシュを使用して、冗長な作業を回避します。
- 複数のジョブの開始時にリソースを大量に消費するビルドを行うのではなく、最初のジョブでビルドを1回実行します。その後、出力をアーティファクトとして、それを必要とするすべての以降のジョブと共有します。
- 暴走するジョブを防ぐために、適切なタイムアウト値を設定します。
- より小さいDockerイメージを使用して、ダウンロード時間と起動時間を短縮します。
効率的なRunnerを選択
効率的なRunnerを選択するには:
- 自身のワークロード要件に一致するRunnerインスタンスタイプを選択します。
- 単純なジョブに対してリソースを過剰にプロビジョニングすることを避けます。
- 重要ではないワークロードには、スポットインスタンスの使用を検討してください。
- 需要に合わせてキャパシティを調整するためにオートスケールを使用します。
戦略的にスケジュール
戦略的にスケジュールするには:
- リソースを大量に消費するパイプラインは、可能であればオフピーク時間に実行するようにスケジュールします。
- 緊急性の低いパイプラインには、カーボンアウェアなスケジュール設定を検討してください。
- 同様のジョブをまとめてバッチ処理し、リソース利用率を向上させます。
監視とイテレーションを行う
持続可能性の取り組みを監視し、イテレーションを行うには:
- 自身のパイプラインのベースラインメトリクスを確立します。
- 排出量削減の目標を設定します。
- 影響の大きいジョブを定期的にレビューして、最適化の機会を探します。
- 持続可能性メトリクスをチームと共有します。