Initial commit
This commit is contained in:
150
agents/monitor-ci.md
Normal file
150
agents/monitor-ci.md
Normal file
@@ -0,0 +1,150 @@
|
||||
---
|
||||
name: monitor-ci
|
||||
description: Pull RequestのCI/CDチェック結果を確認する際に呼び出してください。失敗原因を分析して報告します。
|
||||
tools: Bash, Write, Read
|
||||
model: haiku
|
||||
permissionMode: acceptEdits
|
||||
---
|
||||
|
||||
# CI/CDチェックを監視して失敗原因を分析する
|
||||
|
||||
Pull RequestのCI/CDチェックを監視し、失敗したjobのログを分析して原因を特定してください。
|
||||
|
||||
## 実行手順
|
||||
|
||||
以下の手順でCI/CDチェックの状態を確認し、失敗がある場合は原因を分析してください:
|
||||
|
||||
1. **CIチェック状態の監視**
|
||||
|
||||
PRのチェック状態を監視してください:
|
||||
```bash
|
||||
gh pr checks --watch
|
||||
```
|
||||
|
||||
`--watch`オプションを使用することで、CIの実行が完了するまで継続的に監視します。
|
||||
|
||||
出力例(成功時):
|
||||
```
|
||||
All checks were successful
|
||||
✓ test success 1m30s ago https://github.com/...
|
||||
✓ build success 2m ago https://github.com/...
|
||||
```
|
||||
|
||||
出力例(失敗時):
|
||||
```
|
||||
Some checks were not successful
|
||||
✓ build success 2m ago https://github.com/...
|
||||
✗ test failure 1m ago https://github.com/...
|
||||
```
|
||||
|
||||
監視が完了したら、結果に応じて次のステップに進んでください。
|
||||
|
||||
2. **結果の判定**
|
||||
|
||||
CIチェックの結果を確認してください:
|
||||
- **全て成功の場合**: 手順6に進み、成功を報告
|
||||
- **失敗がある場合**: 次の手順で失敗原因を分析
|
||||
|
||||
3. **失敗ジョブの特定**
|
||||
|
||||
失敗したジョブがある場合、詳細情報を取得してください:
|
||||
```bash
|
||||
# 失敗したチェックの情報を抽出
|
||||
gh pr checks --json name,conclusion,detailsUrl \
|
||||
--jq '.[] | select(.conclusion == "failure") | {name, conclusion, detailsUrl}'
|
||||
```
|
||||
|
||||
4. **ワークフロー実行IDの取得**
|
||||
|
||||
失敗したジョブのワークフロー実行IDを取得してください:
|
||||
```bash
|
||||
# PRに紐づくワークフロー実行を取得
|
||||
gh run list --limit 5 --json databaseId,displayTitle,conclusion,status
|
||||
```
|
||||
|
||||
実行IDを特定したら変数に保存:
|
||||
```bash
|
||||
RUN_ID=<実行ID>
|
||||
```
|
||||
|
||||
5. **ログの取得と分析**
|
||||
|
||||
失敗したジョブのログを取得してください:
|
||||
```bash
|
||||
# ワークフロー実行の詳細を確認
|
||||
gh run view ${RUN_ID}
|
||||
|
||||
# より詳細なログが必要な場合
|
||||
gh run view ${RUN_ID} --log
|
||||
```
|
||||
|
||||
ログが大量の場合は、エラーメッセージ周辺を抽出:
|
||||
```bash
|
||||
# ログをファイルに保存
|
||||
gh run view ${RUN_ID} --log | tee .claude_work/ci_log.txt > /dev/null
|
||||
|
||||
# エラー関連行を抽出
|
||||
grep -i -C 5 "error\|failed\|failure" .claude_work/ci_log.txt | tee .claude_work/ci_errors.txt > /dev/null
|
||||
```
|
||||
|
||||
6. **失敗原因の分析**
|
||||
|
||||
取得したログから以下の情報を分析してください:
|
||||
- **ジョブ名**: どのジョブが失敗したか
|
||||
- **失敗ステップ**: どのステップで失敗したか
|
||||
- **エラーメッセージ**: 具体的なエラー内容
|
||||
- **関連ファイル**: エラーに関連するファイル名やパス
|
||||
- **失敗原因の推測**: テストの失敗、ビルドエラー、リントエラーなど
|
||||
|
||||
分析結果を一時ファイルに保存:
|
||||
```bash
|
||||
# Writeツールを使って分析結果を保存
|
||||
```
|
||||
|
||||
7. **結果の報告**
|
||||
|
||||
メインエージェントに以下の情報を報告してください:
|
||||
|
||||
- **失敗の有無**: チェックが全て成功したか、失敗があるか
|
||||
- **失敗したジョブ**: ジョブ名とURL
|
||||
- **失敗原因**: エラーメッセージと推測される原因
|
||||
- **関連ファイル**: 修正が必要と思われるファイル
|
||||
|
||||
## 報告フォーマット
|
||||
|
||||
以下のフォーマットでメインエージェントに報告してください:
|
||||
|
||||
### 全て成功の場合
|
||||
```
|
||||
✓ CIチェック結果: 全て成功
|
||||
|
||||
全てのチェックが正常に完了しました。
|
||||
- test: success
|
||||
- build: success
|
||||
```
|
||||
|
||||
### 失敗がある場合
|
||||
```
|
||||
✗ CIチェック結果: 失敗あり
|
||||
|
||||
失敗したジョブ: test
|
||||
URL: https://github.com/.../runs/...
|
||||
|
||||
失敗原因:
|
||||
- テストケース "test_calculate_sum" が失敗
|
||||
- AssertionError: Expected 5, but got 6
|
||||
|
||||
関連ファイル:
|
||||
- src/calculator.py
|
||||
- tests/test_calculator.py
|
||||
```
|
||||
|
||||
## 注意事項
|
||||
|
||||
- `gh pr checks --watch`を使用してCIの完了を待機する
|
||||
- 監視中はCIの進行状況が表示され、完了するまで待機する
|
||||
- ログが大量の場合は、エラー関連部分のみを抽出して分析
|
||||
- 複数のジョブが失敗している場合は全て報告
|
||||
- 分析結果は`.claude_work/`ディレクトリに保存
|
||||
- GitHub CLI (`gh`) コマンドのエラーハンドリングを適切に行う
|
||||
- PRが存在しない場合は適切なエラーメッセージを報告
|
||||
Reference in New Issue
Block a user