CI/CDパイプライン修正フロー
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
CI/CDパイプライン修正フローは、GitLab CI/CDパイプラインの問題を診断し、修正案を提示します。失敗を診断するために、フローは次の情報を調べます:
- エラーメッセージ、失敗したジョブの出力、終了コードなどのパイプラインログ。
- 失敗の原因となった可能性のあるマージリクエストの変更。
- 構文エラー、Lintエラー、またはインポートエラーを特定するためのリポジトリの内容。
- コマンドの失敗、実行可能ファイルの欠落、権限の問題などのスクリプトエラー。
フローが修正を適用する方法は、パイプラインのコンテキストによって異なります:
- パイプラインがマージリクエストに関連付けられている場合、フローはソースブランチにインラインコード提案を適用します。提案は、マージリクエストから直接レビューして適用できます。
- 修正のため、現在のマージリクエストの差分に含まれていないファイルを変更する必要がある場合、フローは代わりに新しいマージリクエストを作成します。
- パイプラインがマージリクエストに関連付けられていない場合、フローは修正を含む新しいマージリクエストを作成します。
場合によっては、フローは修正を試みる代わりに、失敗および実行可能な次のステップについて説明するコメントを投稿します。たとえば、パイプラインがマージリクエストに関連付けられている場合、次のような状況でこの処理が行われます:
- 信頼性の高い修正を特定するためのコンテキストが不足している。
- 失敗がセキュリティに関係するため、人によるレビューが必要である。
- 失敗のカテゴリが、フローで対処可能なものではない。
セッションが開始および完了すると、フローはセッションへのリンクを含むシステムノートをマージリクエストに投稿します。このフローはGitLab UIでのみ使用できます。
GitLab Duo Agent Platformを使用しており、失敗したパイプラインを自動的に修正する場合は、このフローの使用をおすすめします。このフローは、単一ジョブの失敗についてトラブルシューティングを行うためのGitLab Duo Chat機能である根本原因分析とは別の機能です。
前提条件
- GitLab Duo Agent Platformの前提条件を満たしていること。
- トップレベルグループで、基本フローを許可とCI/CDパイプラインを修正をオンにしている。
- プロジェクトのデベロッパー、メンテナー、またはオーナーロールを持っている。
- 既存の失敗しているパイプラインがある。
- サービスアカウントを許可するようにプッシュルールを設定している。
- 独自のRunnerを設定しているか、プロジェクトでGitLabホストRunnerをオンにしている。
- 推奨。エージェント設定ファイルを作成して、フローがプロジェクトのツールチェーンと依存関係にアクセスできるようにします。
マージリクエストでパイプラインを修正する
マージリクエストでCI/CDパイプラインを修正するには:
上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
左側のサイドバーで、コード > マージリクエストを選択して、マージリクエストを開きます。
パイプラインを修正するには、次のいずれかの方法を使用します:
- 概要タブを選択し、失敗しているパイプラインの下にあるDuoでパイプラインを修正を選択する。
- パイプラインタブを選択し、右端の列でDuoでパイプラインを修正( )を選択します。
- GitLab Duoサイドバーで、新規または既存のAgentic Chatの会話を開き、Agentic Chatにパイプラインの修正を依頼する。
進捗状況を監視するには、左側のサイドバーでAI > セッションを選択します。
Agentic Chatを使用している場合、次の操作もできます:
- Chatの会話で進捗状況を確認する。
- 会話でエージェントセッションを表示を選択する。
セッションが完了すると、フローはマージリクエストにコード提案を追加するか、実行可能な次のステップについて説明するコメントを投稿します。
他のCI/CDパイプラインを修正する
マージリクエストに関連付けられていないCI/CDパイプラインを修正するには:
- ビルド > パイプラインを選択します。
- 失敗しているパイプラインを選択します。
- 右上隅で、Duoでパイプラインを修正を選択します。
- 進捗状況を監視するには、AI > セッションを選択します。
AGENTS.mdを使用してフローをカスタマイズする
フローは、リポジトリ内のAGENTS.mdファイルからリポジトリ固有の指示を読み取ります。AGENTS.mdを使用して、次のような動作をカスタマイズできます:
- フローがコミットする変更のコミットメッセージ形式。
- フローが作成するマージリクエストのラベルや説明などのメタデータ。
- 特定の種類の失敗を分類して処理する方法。
- フローが同じ失敗した修正を複数回繰り返し行わないようにするため、同じ種類の失敗が繰り返された場合の処理方法。
例:
## Fix pipeline merge requests
When opening a merge request as part of the Fix Pipeline flow (the title contains [FixPipeline]),
apply labels based on the following failed pipeline scenarios:
- Pipeline failed on merge_request: apply "pipeline::tier-1". This runs the cheaper tier-1
pipeline instead of the full default pipeline.
- Pipeline failed on the default_branch (main): apply both "pipeline::expedited" and
"main:broken". Do not apply pipeline::tier-1 in this case.
- Pipeline failed on other branches: apply "pipeline::tier-1". Same treatment as the
merge_request case.たとえば、移行の失敗を処理する場合:
## Migration failures
If a pipeline fails because of a database migration:
- Run `bin/rails db:migrate:status` to check the current migration state before attempting
a fix.
- Do not edit or delete past migration files.
- If the migration cannot be safely reversed, post a comment describing the issue instead
of attempting a fix.既知の問題
- AIゲートウェイは、ジョブログの末尾150 KiBのみを処理します。ジョブから大量の出力が生成される場合、ログの前半にある関連性の高い失敗情報をフローが取得できない可能性があります。回避策については、次のセクションを参照してください。
- フローは、サンドボックス化されたランタイム環境でパッケージのインストールを常に検証できるとは限りません。依存関係が不足している場合、デフォルトのフローイメージをカスタマイズできます。デフォルトのDockerイメージを変更するを参照してください。
AGENTS.mdに記載されているリポジトリの指示はフローの動作に影響を与えますが、すべての場合でそれに従うことを保証するものではありません。
トラブルシューティング
CI/CDパイプライン修正フローを使用する際に、次の問題が発生する可能性があります。
フローが失敗の根本原因を特定できない
フローがパイプラインの失敗の根本原因を特定できない場合があります。
この問題は、ジョブログが150 KiBを超える場合に発生します。AIゲートウェイはジョブログの末尾150 KiBのみを処理するため、ログの前半にある関連性の高い失敗情報を取得できない可能性があります。
この問題を回避するには、次の方法を試してください:
- デバッグログや進捗インジケーターを削除して、詳細な出力を減らす。
- Shellリダイレクト(
> /dev/null)を使用して、重要でない出力をリダイレクトする。 - スクリプトの最後にサマリーステップを追加し、主要なエラーメッセージを出力する。
after_scriptを使用して、メインスクリプトの完了後に診断情報を出力する。- 出力の多いジョブを、ログがより簡潔かつ小規模で目的を絞ったジョブに分割する。
セッションを開始できませんでした
CI/CDパイプライン修正フローのセッションが失敗し、セッションページ(AI > セッション)にSession failed to startアラートが表示されます。
失敗したパイプラインと、それを修正するためにフローが作成するワークロードパイプラインの2つのパイプラインが関与します。ワークロードパイプライン内のジョブのステータスを確認してください。
原因と解決方法については、フローのジョブまたはセッションが開始に失敗するを参照してください。
Duoでパイプラインを修正ボタンが表示されない
前提要件を満たしているにもかかわらず、Duoでパイプラインを修正ボタンが表示されません。
この問題は、ボタンが3つの異なるページ(GitLab Duo、Agent Platform、基本フロー)の設定に依存しているために発生します。ある階層で設定が有効になっていても、その下のすべての階層で有効になっているとは限りません。
この問題を解決するには、それぞれの要件を再確認してください:
- GitLab DuoまたはGitLab Duo Coreが有効になっています。
- Agent Platformが有効になっています。
- 基本フローを許可とCI/CDパイプランの修正が、トップレベルグループおよび(GitLab Self-Managedの場合は)インスタンスに対して有効になっています。
フィードバックを提供する
チームは、CI/CDパイプライン修正フローの改善に積極的に取り組んでいます。問題を報告したり改善を提案したりするには、フィードバックイシュー601991にフィードバックを投稿してください。