# GitHub Actions AI Analyzer
[](https://badge.fury.io/py/github-actions-ai-analyzer)
[](https://github.com/scottlz0310/Github-Actions-AI-Analyzer/releases/tag/v0.1.2)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/psf/black)
[](https://github.com/scottlz0310/Github-Actions-AI-Analyzer)
GitHub Actionsのエラーログを解析し、AIによる改善案生成を支援するライブラリ・ツールです。
## 🤖 AI品質向上システム統合
このリポジトリには、PhotoGeoViewプロジェクトで開発された**AI品質向上システム**が統合されています。自動的なテスト品質向上と継続的な改善を支援します。
### 🎯 AI品質向上システムの機能
- **自動品質解析**: CIレポートとログファイルの自動解析
- **品質メトリクス計算**: 総合品質スコアの算出
- **改善提案生成**: 具体的な修正アクションの提案
- **自動修正実行**: コードフォーマットの自動修正
- **品質レポート生成**: 包括的な品質レポートの生成
### 📊 品質メトリクス
- **総合品質スコア**: プロジェクト全体の品質評価
- **エラー頻度**: 1000行あたりのエラー数
- **警告頻度**: 1000行あたりの警告数
- **問題密度**: コードの問題密度
### 🚀 使用方法
```bash
# AI品質向上システムの実行
python tools/github_actions_ai_analyzer_enhanced.py
# GitHub Actionsワークフローの実行
# .github/workflows/ai-quality-improvement.yml
```
詳細については、[AI品質統合ガイド](docs/ai_quality_integration_guide.md)をご覧ください。
## 📖 概要
GitHub Actionsのワークフロー実行で発生するエラーログは、大量のノイズを含み、AIが根本原因を特定するのが困難です。このツールは、エラーログを構造化・最適化し、AIによる効果的な改善案生成を支援します。
### 🎯 解決する課題
- **ログのノイズ除去**: セットアップログ、無関係な警告の除去
- **エラーの構造化**: 散在するエラー情報の統合と分類
- **コンテキスト情報の補完**: ワークフロー構成、リポジトリ情報との関連付け
- **AI向け最適化**: AIが理解しやすい形でのプロンプト生成
## ✨ 主な機能
- **ログ解析エンジン**: GitHub Actionsの生ログを解析し、構造化されたエラー情報を抽出
- **パターンマッチングシステム**: 既知のエラーパターンとのマッチングによる高速な原因特定
- **コンテキスト収集システム**: エラーの背景情報を収集し、AI解析の精度向上に寄与
- **AI プロンプト最適化エンジン**: 構造化されたエラー情報をAIが理解しやすい形式に変換
- **多言語対応**: Python、JavaScript、Javaのエラーパターンに対応
- **豊富な出力形式**: テキスト、JSON、YAML形式での結果出力
## 🛠️ 対応言語・フレームワーク
### Python
- **パッケージマネージャー**: pip, poetry, venv
- **フレームワーク**: Django, Flask, FastAPI
- **エラーパターン**: ModuleNotFoundError, ImportError, pip install failures
### JavaScript/Node.js
- **パッケージマネージャー**: npm, yarn, pnpm
- **フレームワーク**: React, Vue, Next.js, Express
- **エラーパターン**: npm install failures, module resolution errors
### Java
- **ビルドツール**: Maven, Gradle
- **フレームワーク**: Spring Boot, Jakarta EE
- **エラーパターン**: Compilation errors, dependency conflicts
## 🚀 インストール
```bash
# 最新バージョンをインストール
pip install github-actions-ai-analyzer
# 特定のバージョンをインストール
pip install github-actions-ai-analyzer==0.1.2
# AI品質向上システム付きでインストール
pip install github-actions-ai-analyzer[ai-quality]
```
## 🔧 開発環境のセットアップ
### 前提条件
- Python 3.8+
- Git
- Make(オプション)
### セットアップ手順
```bash
# リポジトリをクローン
git clone https://github.com/scottlz0310/Github-Actions-AI-Analyzer.git
cd Github-Actions-AI-Analyzer
# 仮想環境を作成
python -m venv venv
source venv/bin/activate # Linux/macOS
# または
venv\Scripts\activate # Windows
# 開発用依存関係をインストール
make install-dev
# または
pip install -e ".[dev]"
pre-commit install
```
### 開発用コマンド
```bash
# ヘルプを表示
make help
# コードの品質チェック
make lint
# コードを自動フォーマット
make format
# 型チェック
make type-check
# セキュリティチェック
make security-check
# テストを実行
make test
# カバレッジ付きでテストを実行
make test-cov
# すべてのチェックを実行
make check-all
# パッケージをビルド
make build
# キャッシュをクリア
make clean
```
## 📚 使用方法
### 基本的な使用例
```python
from github_actions_ai_analyzer import GitHubActionsAnalyzer
from github_actions_ai_analyzer.types import LogLevel
# アナライザーを作成
analyzer = GitHubActionsAnalyzer()
# ログファイルを解析
result = analyzer.analyze_log_file(
log_file_path="path/to/log.txt",
workflow_file_path=".github/workflows/ci.yml",
repository_path=".",
min_log_level=LogLevel.WARNING
)
# 結果を表示
print(result.summary)
for error in result.error_analyses:
print(f"エラー: {error.root_cause}")
print(f"重要度: {error.severity}")
print(f"影響ステップ: {', '.join(error.affected_steps)}")
# 解決策を表示
for solution in result.solution_proposals:
print(f"解決策: {solution.title}")
print(f"信頼度: {solution.confidence:.1%}")
```
### CLI の使用
```bash
# 基本的なログファイル解析
gh-actions-analyzer analyze log.txt
# ワークフローファイルを指定して解析
gh-actions-analyzer analyze log.txt -w .github/workflows/ci.yml
# リポジトリパスを指定
gh-actions-analyzer analyze log.txt -r /path/to/repository
# JSON形式で出力
gh-actions-analyzer analyze log.txt -o json
# 最小ログレベルを指定(error以上のみ)
gh-actions-analyzer analyze log.txt -l error
# ヘルプを表示
gh-actions-analyzer --help
```
### 出力例
```
GitHub Actions AI Analyzer
ログファイル: /path/to/log.txt
解析結果:
解析ID: 12345678-1234-1234-1234-123456789abc
サマリー: 合計3個のエラーが検出され、2個の解決策が提案されました。
エラー分析数: 3
エラー 1:
ID: error_dep_missing_package_0
根本原因: Pythonパッケージが見つからない
重要度: error
影響ステップ: Install dependencies
関連ファイル: *.py
解決策提案数: 2
解決策 1:
タイトル: Missing Packageの解決
説明: Pythonパッケージが見つからないを解決するための手順
信頼度: 70.0%
推定時間: 5-10分
```
## 🔧 開発
### セットアップ
```bash
# リポジトリをクローン
git clone https://github.com/scottlz0310/Github-Actions-AI-Analyzer.git
cd Github-Actions-AI-Analyzer
# 開発環境をセットアップ
pip install -e ".[dev]"
# プリコミットフックをインストール
pre-commit install
```
### テスト
```bash
# 全テストを実行
pytest
# カバレッジ付きでテスト実行
pytest --cov=src/github_actions_ai_analyzer
# 特定のテストファイルを実行
pytest tests/unit/test_log_processor.py
```
### コード品質
```bash
# コードフォーマット
black src/ tests/
# インポートソート
isort src/ tests/
# リンティング
flake8 src/ tests/
# 型チェック
mypy src/
```
### 使用例の実行
```bash
# 基本的な使用例を実行
python examples/basic_usage.py
```
## 📋 エラーパターン
### 依存関係エラー
- パッケージの不整合
- バージョン競合
- インストール失敗
### 権限エラー
- ファイルアクセス権限
- 実行権限の問題
### 環境エラー
- コマンド不足
- PATH設定の問題
- バージョン不一致
### ネットワークエラー
- タイムアウト
- 接続エラー
- DNS解決失敗
### 構文エラー
- YAML構文エラー
- JSON構文エラー
- スクリプト構文エラー
## 🤝 貢献
プルリクエストやイシューの報告を歓迎します!
### 貢献の流れ
1. このリポジトリをフォーク
2. 機能ブランチを作成 (`git checkout -b feature/amazing-feature`)
3. 変更をコミット (`git commit -m 'Add amazing feature'`)
4. ブランチにプッシュ (`git push origin feature/amazing-feature`)
5. プルリクエストを作成
詳しくは[CONTRIBUTING.md](CONTRIBUTING.md)をご覧ください。
## 📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。詳しくは[LICENSE](LICENSE)ファイルをご覧ください。
## 🙏 謝辞
- [GitHub Actions](https://github.com/features/actions) - CI/CDプラットフォーム
- [Pydantic](https://pydantic-docs.helpmanual.io/) - データバリデーション
- [Click](https://click.palletsprojects.com/) - CLIフレームワーク
- [Rich](https://rich.readthedocs.io/) - ターミナル出力
## 📞 サポート
- **Issues**: [GitHub Issues](https://github.com/scottlz0310/Github-Actions-AI-Analyzer/issues)
- **Discussions**: [GitHub Discussions](https://github.com/scottlz0310/Github-Actions-AI-Analyzer/discussions)
- **Email**: scottlz0310@gmail.com
## 🔄 CI/CDパイプライン
このプロジェクトは包括的なCI/CDパイプラインを採用しており、コード品質とセキュリティを自動的に保証します。
### 🏗️ パイプライン構成
#### コード品質チェック
- **Black**: コードフォーマット
- **isort**: インポート文の整理
- **Flake8**: リンティング
- **MyPy**: 型チェック
- **Pre-commit**: コミット前チェック
#### テスト実行
- **Unit Tests**: 単体テスト(pytest)
- **Integration Tests**: 統合テスト
- **Coverage**: テストカバレッジ(80%以上要求)
- **Multi-platform**: Ubuntu, Windows, macOS
- **Multi-version**: Python 3.8-3.12
#### セキュリティスキャン
- **CodeQL**: GitHubの静的解析
- **Bandit**: Pythonセキュリティスキャン
- **Safety**: 依存関係の脆弱性チェック
- **Trivy**: コンテナ・ファイルシステムスキャン
- **Dependency Review**: 依存関係の変更レビュー
#### 自動化
- **Dependabot**: 依存関係の自動更新
- **Release Management**: 自動リリース作成
- **PyPI Deployment**: 自動パッケージ公開
- **Documentation**: 自動ドキュメント生成
### 📊 品質メトリクス
#### 現在のバージョン
- **Version**: 0.1.1
- **Release Date**: 2024-08-02
- **Python Support**: 3.8+
#### テストカバレッジ
- **Overall Coverage**: 80%+(目標)
- **Core Modules**:
- PatternMatcher: 100%
- ContextCollector: 92%
- Analyzer: 84%
- LogProcessor: 67%
#### セキュリティ
- **Vulnerabilities**: 0(目標)
- **Security Score**: A+(目標)
- **Dependency Updates**: 自動化済み
### 🚀 対応状況
- ✅ 基本的なログ解析機能
- ✅ エラーパターンマッチング
- ✅ CLIインターフェース
- ✅ 多言語対応(Python, JavaScript, Java)
- ✅ テストフレームワーク
- ✅ CI/CDパイプライン
- ✅ セキュリティスキャン
- ✅ 自動リリース管理
- 🔄 AIプロンプト最適化(開発中)
- 🔄 統合テスト(開発中)
---
⭐ このプロジェクトが役に立ったら、スターを付けてください!
Raw data
{
"_id": null,
"home_page": null,
"name": "github-actions-ai-analyzer",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "Scott LZ <scottlz0310@gmail.com>",
"keywords": "github-actions, ci-cd, error-analysis, ai, automation, logging, debugging, devops, quality-improvement, ai-quality, continuous-improvement",
"author": null,
"author_email": "Scott LZ <scottlz0310@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/93/33/7ff98aa9c6bb53925fac0bda95af5de3e53a51a3ce6add733b8896d009c7/github_actions_ai_analyzer-0.1.2.tar.gz",
"platform": null,
"description": "# GitHub Actions AI Analyzer\n\n[](https://badge.fury.io/py/github-actions-ai-analyzer)\n[](https://github.com/scottlz0310/Github-Actions-AI-Analyzer/releases/tag/v0.1.2)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n[](https://github.com/psf/black)\n[](https://github.com/scottlz0310/Github-Actions-AI-Analyzer)\n\nGitHub Actions\u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u89e3\u6790\u3057\u3001AI\u306b\u3088\u308b\u6539\u5584\u6848\u751f\u6210\u3092\u652f\u63f4\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea\u30fb\u30c4\u30fc\u30eb\u3067\u3059\u3002\n\n## \ud83e\udd16 AI\u54c1\u8cea\u5411\u4e0a\u30b7\u30b9\u30c6\u30e0\u7d71\u5408\n\n\u3053\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u306f\u3001PhotoGeoView\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3067\u958b\u767a\u3055\u308c\u305f**AI\u54c1\u8cea\u5411\u4e0a\u30b7\u30b9\u30c6\u30e0**\u304c\u7d71\u5408\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u81ea\u52d5\u7684\u306a\u30c6\u30b9\u30c8\u54c1\u8cea\u5411\u4e0a\u3068\u7d99\u7d9a\u7684\u306a\u6539\u5584\u3092\u652f\u63f4\u3057\u307e\u3059\u3002\n\n### \ud83c\udfaf AI\u54c1\u8cea\u5411\u4e0a\u30b7\u30b9\u30c6\u30e0\u306e\u6a5f\u80fd\n\n- **\u81ea\u52d5\u54c1\u8cea\u89e3\u6790**: CI\u30ec\u30dd\u30fc\u30c8\u3068\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u306e\u81ea\u52d5\u89e3\u6790\n- **\u54c1\u8cea\u30e1\u30c8\u30ea\u30af\u30b9\u8a08\u7b97**: \u7dcf\u5408\u54c1\u8cea\u30b9\u30b3\u30a2\u306e\u7b97\u51fa\n- **\u6539\u5584\u63d0\u6848\u751f\u6210**: \u5177\u4f53\u7684\u306a\u4fee\u6b63\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u63d0\u6848\n- **\u81ea\u52d5\u4fee\u6b63\u5b9f\u884c**: \u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u81ea\u52d5\u4fee\u6b63\n- **\u54c1\u8cea\u30ec\u30dd\u30fc\u30c8\u751f\u6210**: \u5305\u62ec\u7684\u306a\u54c1\u8cea\u30ec\u30dd\u30fc\u30c8\u306e\u751f\u6210\n\n### \ud83d\udcca \u54c1\u8cea\u30e1\u30c8\u30ea\u30af\u30b9\n\n- **\u7dcf\u5408\u54c1\u8cea\u30b9\u30b3\u30a2**: \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u5168\u4f53\u306e\u54c1\u8cea\u8a55\u4fa1\n- **\u30a8\u30e9\u30fc\u983b\u5ea6**: 1000\u884c\u3042\u305f\u308a\u306e\u30a8\u30e9\u30fc\u6570\n- **\u8b66\u544a\u983b\u5ea6**: 1000\u884c\u3042\u305f\u308a\u306e\u8b66\u544a\u6570\n- **\u554f\u984c\u5bc6\u5ea6**: \u30b3\u30fc\u30c9\u306e\u554f\u984c\u5bc6\u5ea6\n\n### \ud83d\ude80 \u4f7f\u7528\u65b9\u6cd5\n\n```bash\n# AI\u54c1\u8cea\u5411\u4e0a\u30b7\u30b9\u30c6\u30e0\u306e\u5b9f\u884c\npython tools/github_actions_ai_analyzer_enhanced.py\n\n# GitHub Actions\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u306e\u5b9f\u884c\n# .github/workflows/ai-quality-improvement.yml\n```\n\n\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001[AI\u54c1\u8cea\u7d71\u5408\u30ac\u30a4\u30c9](docs/ai_quality_integration_guide.md)\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\n\n## \ud83d\udcd6 \u6982\u8981\n\nGitHub Actions\u306e\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u5b9f\u884c\u3067\u767a\u751f\u3059\u308b\u30a8\u30e9\u30fc\u30ed\u30b0\u306f\u3001\u5927\u91cf\u306e\u30ce\u30a4\u30ba\u3092\u542b\u307f\u3001AI\u304c\u6839\u672c\u539f\u56e0\u3092\u7279\u5b9a\u3059\u308b\u306e\u304c\u56f0\u96e3\u3067\u3059\u3002\u3053\u306e\u30c4\u30fc\u30eb\u306f\u3001\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u69cb\u9020\u5316\u30fb\u6700\u9069\u5316\u3057\u3001AI\u306b\u3088\u308b\u52b9\u679c\u7684\u306a\u6539\u5584\u6848\u751f\u6210\u3092\u652f\u63f4\u3057\u307e\u3059\u3002\n\n### \ud83c\udfaf \u89e3\u6c7a\u3059\u308b\u8ab2\u984c\n\n- **\u30ed\u30b0\u306e\u30ce\u30a4\u30ba\u9664\u53bb**: \u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u30ed\u30b0\u3001\u7121\u95a2\u4fc2\u306a\u8b66\u544a\u306e\u9664\u53bb\n- **\u30a8\u30e9\u30fc\u306e\u69cb\u9020\u5316**: \u6563\u5728\u3059\u308b\u30a8\u30e9\u30fc\u60c5\u5831\u306e\u7d71\u5408\u3068\u5206\u985e\n- **\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u60c5\u5831\u306e\u88dc\u5b8c**: \u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u69cb\u6210\u3001\u30ea\u30dd\u30b8\u30c8\u30ea\u60c5\u5831\u3068\u306e\u95a2\u9023\u4ed8\u3051\n- **AI\u5411\u3051\u6700\u9069\u5316**: AI\u304c\u7406\u89e3\u3057\u3084\u3059\u3044\u5f62\u3067\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u751f\u6210\n\n## \u2728 \u4e3b\u306a\u6a5f\u80fd\n\n- **\u30ed\u30b0\u89e3\u6790\u30a8\u30f3\u30b8\u30f3**: GitHub Actions\u306e\u751f\u30ed\u30b0\u3092\u89e3\u6790\u3057\u3001\u69cb\u9020\u5316\u3055\u308c\u305f\u30a8\u30e9\u30fc\u60c5\u5831\u3092\u62bd\u51fa\n- **\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\u30b7\u30b9\u30c6\u30e0**: \u65e2\u77e5\u306e\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f3\u3068\u306e\u30de\u30c3\u30c1\u30f3\u30b0\u306b\u3088\u308b\u9ad8\u901f\u306a\u539f\u56e0\u7279\u5b9a\n- **\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u53ce\u96c6\u30b7\u30b9\u30c6\u30e0**: \u30a8\u30e9\u30fc\u306e\u80cc\u666f\u60c5\u5831\u3092\u53ce\u96c6\u3057\u3001AI\u89e3\u6790\u306e\u7cbe\u5ea6\u5411\u4e0a\u306b\u5bc4\u4e0e\n- **AI \u30d7\u30ed\u30f3\u30d7\u30c8\u6700\u9069\u5316\u30a8\u30f3\u30b8\u30f3**: \u69cb\u9020\u5316\u3055\u308c\u305f\u30a8\u30e9\u30fc\u60c5\u5831\u3092AI\u304c\u7406\u89e3\u3057\u3084\u3059\u3044\u5f62\u5f0f\u306b\u5909\u63db\n- **\u591a\u8a00\u8a9e\u5bfe\u5fdc**: Python\u3001JavaScript\u3001Java\u306e\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f3\u306b\u5bfe\u5fdc\n- **\u8c4a\u5bcc\u306a\u51fa\u529b\u5f62\u5f0f**: \u30c6\u30ad\u30b9\u30c8\u3001JSON\u3001YAML\u5f62\u5f0f\u3067\u306e\u7d50\u679c\u51fa\u529b\n\n## \ud83d\udee0\ufe0f \u5bfe\u5fdc\u8a00\u8a9e\u30fb\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\n\n### Python\n- **\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc**: pip, poetry, venv\n- **\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af**: Django, Flask, FastAPI\n- **\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f3**: ModuleNotFoundError, ImportError, pip install failures\n\n### JavaScript/Node.js\n- **\u30d1\u30c3\u30b1\u30fc\u30b8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc**: npm, yarn, pnpm\n- **\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af**: React, Vue, Next.js, Express\n- **\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f3**: npm install failures, module resolution errors\n\n### Java\n- **\u30d3\u30eb\u30c9\u30c4\u30fc\u30eb**: Maven, Gradle\n- **\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af**: Spring Boot, Jakarta EE\n- **\u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f3**: Compilation errors, dependency conflicts\n\n## \ud83d\ude80 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\n\n```bash\n# \u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\npip install github-actions-ai-analyzer\n\n# \u7279\u5b9a\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\npip install github-actions-ai-analyzer==0.1.2\n\n# AI\u54c1\u8cea\u5411\u4e0a\u30b7\u30b9\u30c6\u30e0\u4ed8\u304d\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\npip install github-actions-ai-analyzer[ai-quality]\n```\n\n## \ud83d\udd27 \u958b\u767a\u74b0\u5883\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\n\n### \u524d\u63d0\u6761\u4ef6\n- Python 3.8+\n- Git\n- Make\uff08\u30aa\u30d7\u30b7\u30e7\u30f3\uff09\n\n### \u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u624b\u9806\n\n```bash\n# \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\ngit clone https://github.com/scottlz0310/Github-Actions-AI-Analyzer.git\ncd Github-Actions-AI-Analyzer\n\n# \u4eee\u60f3\u74b0\u5883\u3092\u4f5c\u6210\npython -m venv venv\nsource venv/bin/activate # Linux/macOS\n# \u307e\u305f\u306f\nvenv\\Scripts\\activate # Windows\n\n# \u958b\u767a\u7528\u4f9d\u5b58\u95a2\u4fc2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\nmake install-dev\n# \u307e\u305f\u306f\npip install -e \".[dev]\"\npre-commit install\n```\n\n### \u958b\u767a\u7528\u30b3\u30de\u30f3\u30c9\n\n```bash\n# \u30d8\u30eb\u30d7\u3092\u8868\u793a\nmake help\n\n# \u30b3\u30fc\u30c9\u306e\u54c1\u8cea\u30c1\u30a7\u30c3\u30af\nmake lint\n\n# \u30b3\u30fc\u30c9\u3092\u81ea\u52d5\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\nmake format\n\n# \u578b\u30c1\u30a7\u30c3\u30af\nmake type-check\n\n# \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30c1\u30a7\u30c3\u30af\nmake security-check\n\n# \u30c6\u30b9\u30c8\u3092\u5b9f\u884c\nmake test\n\n# \u30ab\u30d0\u30ec\u30c3\u30b8\u4ed8\u304d\u3067\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\nmake test-cov\n\n# \u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af\u3092\u5b9f\u884c\nmake check-all\n\n# \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u30d3\u30eb\u30c9\nmake build\n\n# \u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\nmake clean\n```\n\n## \ud83d\udcda \u4f7f\u7528\u65b9\u6cd5\n\n### \u57fa\u672c\u7684\u306a\u4f7f\u7528\u4f8b\n\n```python\nfrom github_actions_ai_analyzer import GitHubActionsAnalyzer\nfrom github_actions_ai_analyzer.types import LogLevel\n\n# \u30a2\u30ca\u30e9\u30a4\u30b6\u30fc\u3092\u4f5c\u6210\nanalyzer = GitHubActionsAnalyzer()\n\n# \u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\nresult = analyzer.analyze_log_file(\n log_file_path=\"path/to/log.txt\",\n workflow_file_path=\".github/workflows/ci.yml\",\n repository_path=\".\",\n min_log_level=LogLevel.WARNING\n)\n\n# \u7d50\u679c\u3092\u8868\u793a\nprint(result.summary)\nfor error in result.error_analyses:\n print(f\"\u30a8\u30e9\u30fc: {error.root_cause}\")\n print(f\"\u91cd\u8981\u5ea6: {error.severity}\")\n print(f\"\u5f71\u97ff\u30b9\u30c6\u30c3\u30d7: {', '.join(error.affected_steps)}\")\n\n# \u89e3\u6c7a\u7b56\u3092\u8868\u793a\nfor solution in result.solution_proposals:\n print(f\"\u89e3\u6c7a\u7b56: {solution.title}\")\n print(f\"\u4fe1\u983c\u5ea6: {solution.confidence:.1%}\")\n```\n\n### CLI \u306e\u4f7f\u7528\n\n```bash\n# \u57fa\u672c\u7684\u306a\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u89e3\u6790\ngh-actions-analyzer analyze log.txt\n\n# \u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30d5\u30a1\u30a4\u30eb\u3092\u6307\u5b9a\u3057\u3066\u89e3\u6790\ngh-actions-analyzer analyze log.txt -w .github/workflows/ci.yml\n\n# \u30ea\u30dd\u30b8\u30c8\u30ea\u30d1\u30b9\u3092\u6307\u5b9a\ngh-actions-analyzer analyze log.txt -r /path/to/repository\n\n# JSON\u5f62\u5f0f\u3067\u51fa\u529b\ngh-actions-analyzer analyze log.txt -o json\n\n# \u6700\u5c0f\u30ed\u30b0\u30ec\u30d9\u30eb\u3092\u6307\u5b9a\uff08error\u4ee5\u4e0a\u306e\u307f\uff09\ngh-actions-analyzer analyze log.txt -l error\n\n# \u30d8\u30eb\u30d7\u3092\u8868\u793a\ngh-actions-analyzer --help\n```\n\n### \u51fa\u529b\u4f8b\n\n```\nGitHub Actions AI Analyzer\n\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb: /path/to/log.txt\n\n\u89e3\u6790\u7d50\u679c:\n\u89e3\u6790ID: 12345678-1234-1234-1234-123456789abc\n\u30b5\u30de\u30ea\u30fc: \u5408\u8a083\u500b\u306e\u30a8\u30e9\u30fc\u304c\u691c\u51fa\u3055\u308c\u30012\u500b\u306e\u89e3\u6c7a\u7b56\u304c\u63d0\u6848\u3055\u308c\u307e\u3057\u305f\u3002\n\n\u30a8\u30e9\u30fc\u5206\u6790\u6570: 3\n\u30a8\u30e9\u30fc 1:\n ID: error_dep_missing_package_0\n \u6839\u672c\u539f\u56e0: Python\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u898b\u3064\u304b\u3089\u306a\u3044\n \u91cd\u8981\u5ea6: error\n \u5f71\u97ff\u30b9\u30c6\u30c3\u30d7: Install dependencies\n \u95a2\u9023\u30d5\u30a1\u30a4\u30eb: *.py\n\n\u89e3\u6c7a\u7b56\u63d0\u6848\u6570: 2\n\u89e3\u6c7a\u7b56 1:\n \u30bf\u30a4\u30c8\u30eb: Missing Package\u306e\u89e3\u6c7a\n \u8aac\u660e: Python\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u3092\u89e3\u6c7a\u3059\u308b\u305f\u3081\u306e\u624b\u9806\n \u4fe1\u983c\u5ea6: 70.0%\n \u63a8\u5b9a\u6642\u9593: 5-10\u5206\n```\n\n## \ud83d\udd27 \u958b\u767a\n\n### \u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\n\n```bash\n# \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30af\u30ed\u30fc\u30f3\ngit clone https://github.com/scottlz0310/Github-Actions-AI-Analyzer.git\ncd Github-Actions-AI-Analyzer\n\n# \u958b\u767a\u74b0\u5883\u3092\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\npip install -e \".[dev]\"\n\n# \u30d7\u30ea\u30b3\u30df\u30c3\u30c8\u30d5\u30c3\u30af\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\npre-commit install\n```\n\n### \u30c6\u30b9\u30c8\n\n```bash\n# \u5168\u30c6\u30b9\u30c8\u3092\u5b9f\u884c\npytest\n\n# \u30ab\u30d0\u30ec\u30c3\u30b8\u4ed8\u304d\u3067\u30c6\u30b9\u30c8\u5b9f\u884c\npytest --cov=src/github_actions_ai_analyzer\n\n# \u7279\u5b9a\u306e\u30c6\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u5b9f\u884c\npytest tests/unit/test_log_processor.py\n```\n\n### \u30b3\u30fc\u30c9\u54c1\u8cea\n\n```bash\n# \u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\nblack src/ tests/\n\n# \u30a4\u30f3\u30dd\u30fc\u30c8\u30bd\u30fc\u30c8\nisort src/ tests/\n\n# \u30ea\u30f3\u30c6\u30a3\u30f3\u30b0\nflake8 src/ tests/\n\n# \u578b\u30c1\u30a7\u30c3\u30af\nmypy src/\n```\n\n### \u4f7f\u7528\u4f8b\u306e\u5b9f\u884c\n\n```bash\n# \u57fa\u672c\u7684\u306a\u4f7f\u7528\u4f8b\u3092\u5b9f\u884c\npython examples/basic_usage.py\n```\n\n## \ud83d\udccb \u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f3\n\n### \u4f9d\u5b58\u95a2\u4fc2\u30a8\u30e9\u30fc\n- \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u4e0d\u6574\u5408\n- \u30d0\u30fc\u30b8\u30e7\u30f3\u7af6\u5408\n- \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5931\u6557\n\n### \u6a29\u9650\u30a8\u30e9\u30fc\n- \u30d5\u30a1\u30a4\u30eb\u30a2\u30af\u30bb\u30b9\u6a29\u9650\n- \u5b9f\u884c\u6a29\u9650\u306e\u554f\u984c\n\n### \u74b0\u5883\u30a8\u30e9\u30fc\n- \u30b3\u30de\u30f3\u30c9\u4e0d\u8db3\n- PATH\u8a2d\u5b9a\u306e\u554f\u984c\n- \u30d0\u30fc\u30b8\u30e7\u30f3\u4e0d\u4e00\u81f4\n\n### \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30a8\u30e9\u30fc\n- \u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\n- \u63a5\u7d9a\u30a8\u30e9\u30fc\n- DNS\u89e3\u6c7a\u5931\u6557\n\n### \u69cb\u6587\u30a8\u30e9\u30fc\n- YAML\u69cb\u6587\u30a8\u30e9\u30fc\n- JSON\u69cb\u6587\u30a8\u30e9\u30fc\n- \u30b9\u30af\u30ea\u30d7\u30c8\u69cb\u6587\u30a8\u30e9\u30fc\n\n## \ud83e\udd1d \u8ca2\u732e\n\n\u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3084\u30a4\u30b7\u30e5\u30fc\u306e\u5831\u544a\u3092\u6b53\u8fce\u3057\u307e\u3059\uff01\n\n### \u8ca2\u732e\u306e\u6d41\u308c\n\n1. \u3053\u306e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30d5\u30a9\u30fc\u30af\n2. \u6a5f\u80fd\u30d6\u30e9\u30f3\u30c1\u3092\u4f5c\u6210 (`git checkout -b feature/amazing-feature`)\n3. \u5909\u66f4\u3092\u30b3\u30df\u30c3\u30c8 (`git commit -m 'Add amazing feature'`)\n4. \u30d6\u30e9\u30f3\u30c1\u306b\u30d7\u30c3\u30b7\u30e5 (`git push origin feature/amazing-feature`)\n5. \u30d7\u30eb\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u4f5c\u6210\n\n\u8a73\u3057\u304f\u306f[CONTRIBUTING.md](CONTRIBUTING.md)\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\n\n## \ud83d\udcc4 \u30e9\u30a4\u30bb\u30f3\u30b9\n\n\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306fMIT\u30e9\u30a4\u30bb\u30f3\u30b9\u306e\u4e0b\u3067\u516c\u958b\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u8a73\u3057\u304f\u306f[LICENSE](LICENSE)\u30d5\u30a1\u30a4\u30eb\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\n\n## \ud83d\ude4f \u8b1d\u8f9e\n\n- [GitHub Actions](https://github.com/features/actions) - CI/CD\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\n- [Pydantic](https://pydantic-docs.helpmanual.io/) - \u30c7\u30fc\u30bf\u30d0\u30ea\u30c7\u30fc\u30b7\u30e7\u30f3\n- [Click](https://click.palletsprojects.com/) - CLI\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\n- [Rich](https://rich.readthedocs.io/) - \u30bf\u30fc\u30df\u30ca\u30eb\u51fa\u529b\n\n## \ud83d\udcde \u30b5\u30dd\u30fc\u30c8\n\n- **Issues**: [GitHub Issues](https://github.com/scottlz0310/Github-Actions-AI-Analyzer/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/scottlz0310/Github-Actions-AI-Analyzer/discussions)\n- **Email**: scottlz0310@gmail.com\n\n## \ud83d\udd04 CI/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\n\n\u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306f\u5305\u62ec\u7684\u306aCI/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u3092\u63a1\u7528\u3057\u3066\u304a\u308a\u3001\u30b3\u30fc\u30c9\u54c1\u8cea\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u81ea\u52d5\u7684\u306b\u4fdd\u8a3c\u3057\u307e\u3059\u3002\n\n### \ud83c\udfd7\ufe0f \u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\u69cb\u6210\n\n#### \u30b3\u30fc\u30c9\u54c1\u8cea\u30c1\u30a7\u30c3\u30af\n- **Black**: \u30b3\u30fc\u30c9\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\n- **isort**: \u30a4\u30f3\u30dd\u30fc\u30c8\u6587\u306e\u6574\u7406\n- **Flake8**: \u30ea\u30f3\u30c6\u30a3\u30f3\u30b0\n- **MyPy**: \u578b\u30c1\u30a7\u30c3\u30af\n- **Pre-commit**: \u30b3\u30df\u30c3\u30c8\u524d\u30c1\u30a7\u30c3\u30af\n\n#### \u30c6\u30b9\u30c8\u5b9f\u884c\n- **Unit Tests**: \u5358\u4f53\u30c6\u30b9\u30c8\uff08pytest\uff09\n- **Integration Tests**: \u7d71\u5408\u30c6\u30b9\u30c8\n- **Coverage**: \u30c6\u30b9\u30c8\u30ab\u30d0\u30ec\u30c3\u30b8\uff0880%\u4ee5\u4e0a\u8981\u6c42\uff09\n- **Multi-platform**: Ubuntu, Windows, macOS\n- **Multi-version**: Python 3.8-3.12\n\n#### \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3\n- **CodeQL**: GitHub\u306e\u9759\u7684\u89e3\u6790\n- **Bandit**: Python\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3\n- **Safety**: \u4f9d\u5b58\u95a2\u4fc2\u306e\u8106\u5f31\u6027\u30c1\u30a7\u30c3\u30af\n- **Trivy**: \u30b3\u30f3\u30c6\u30ca\u30fb\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u30b9\u30ad\u30e3\u30f3\n- **Dependency Review**: \u4f9d\u5b58\u95a2\u4fc2\u306e\u5909\u66f4\u30ec\u30d3\u30e5\u30fc\n\n#### \u81ea\u52d5\u5316\n- **Dependabot**: \u4f9d\u5b58\u95a2\u4fc2\u306e\u81ea\u52d5\u66f4\u65b0\n- **Release Management**: \u81ea\u52d5\u30ea\u30ea\u30fc\u30b9\u4f5c\u6210\n- **PyPI Deployment**: \u81ea\u52d5\u30d1\u30c3\u30b1\u30fc\u30b8\u516c\u958b\n- **Documentation**: \u81ea\u52d5\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u751f\u6210\n\n### \ud83d\udcca \u54c1\u8cea\u30e1\u30c8\u30ea\u30af\u30b9\n\n#### \u73fe\u5728\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\n- **Version**: 0.1.1\n- **Release Date**: 2024-08-02\n- **Python Support**: 3.8+\n\n#### \u30c6\u30b9\u30c8\u30ab\u30d0\u30ec\u30c3\u30b8\n- **Overall Coverage**: 80%+\uff08\u76ee\u6a19\uff09\n- **Core Modules**: \n - PatternMatcher: 100%\n - ContextCollector: 92%\n - Analyzer: 84%\n - LogProcessor: 67%\n\n#### \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\n- **Vulnerabilities**: 0\uff08\u76ee\u6a19\uff09\n- **Security Score**: A+\uff08\u76ee\u6a19\uff09\n- **Dependency Updates**: \u81ea\u52d5\u5316\u6e08\u307f\n\n### \ud83d\ude80 \u5bfe\u5fdc\u72b6\u6cc1\n- \u2705 \u57fa\u672c\u7684\u306a\u30ed\u30b0\u89e3\u6790\u6a5f\u80fd\n- \u2705 \u30a8\u30e9\u30fc\u30d1\u30bf\u30fc\u30f3\u30de\u30c3\u30c1\u30f3\u30b0\n- \u2705 CLI\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\n- \u2705 \u591a\u8a00\u8a9e\u5bfe\u5fdc\uff08Python, JavaScript, Java\uff09\n- \u2705 \u30c6\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\n- \u2705 CI/CD\u30d1\u30a4\u30d7\u30e9\u30a4\u30f3\n- \u2705 \u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30ad\u30e3\u30f3\n- \u2705 \u81ea\u52d5\u30ea\u30ea\u30fc\u30b9\u7ba1\u7406\n- \ud83d\udd04 AI\u30d7\u30ed\u30f3\u30d7\u30c8\u6700\u9069\u5316\uff08\u958b\u767a\u4e2d\uff09\n- \ud83d\udd04 \u7d71\u5408\u30c6\u30b9\u30c8\uff08\u958b\u767a\u4e2d\uff09\n\n---\n\n\u2b50 \u3053\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u5f79\u306b\u7acb\u3063\u305f\u3089\u3001\u30b9\u30bf\u30fc\u3092\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\uff01 \n",
"bugtrack_url": null,
"license": "MIT",
"summary": "GitHub Actions\u306e\u30a8\u30e9\u30fc\u30ed\u30b0\u3092\u89e3\u6790\u3057\u3001AI\u306b\u3088\u308b\u6539\u5584\u6848\u751f\u6210\u3068\u54c1\u8cea\u5411\u4e0a\u3092\u652f\u63f4\u3059\u308b\u30e9\u30a4\u30d6\u30e9\u30ea",
"version": "0.1.2",
"project_urls": {
"Documentation": "https://github.com/scottlz0310/Github-Actions-AI-Analyzer#readme",
"Homepage": "https://github.com/scottlz0310/Github-Actions-AI-Analyzer",
"Issues": "https://github.com/scottlz0310/Github-Actions-AI-Analyzer/issues",
"Repository": "https://github.com/scottlz0310/Github-Actions-AI-Analyzer"
},
"split_keywords": [
"github-actions",
" ci-cd",
" error-analysis",
" ai",
" automation",
" logging",
" debugging",
" devops",
" quality-improvement",
" ai-quality",
" continuous-improvement"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3426e72505bd54664777c31215b570df309d7560c9c5d097af1c13ba074754e3",
"md5": "122d50d90d0cc3464abc2edb33e037d9",
"sha256": "a924cde2764a0870d9bd3916e018cadc77b32ea0489bd89be6454dbc3787601b"
},
"downloads": -1,
"filename": "github_actions_ai_analyzer-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "122d50d90d0cc3464abc2edb33e037d9",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 30560,
"upload_time": "2025-08-02T06:08:24",
"upload_time_iso_8601": "2025-08-02T06:08:24.957286Z",
"url": "https://files.pythonhosted.org/packages/34/26/e72505bd54664777c31215b570df309d7560c9c5d097af1c13ba074754e3/github_actions_ai_analyzer-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "93337ff98aa9c6bb53925fac0bda95af5de3e53a51a3ce6add733b8896d009c7",
"md5": "977153ed5844789088395eda190944ff",
"sha256": "364f981b8545abf3c6eef1b2308c1af96ddf5fe6b62a1737190c20aeec7fb9ab"
},
"downloads": -1,
"filename": "github_actions_ai_analyzer-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "977153ed5844789088395eda190944ff",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 44308,
"upload_time": "2025-08-02T06:08:26",
"upload_time_iso_8601": "2025-08-02T06:08:26.158574Z",
"url": "https://files.pythonhosted.org/packages/93/33/7ff98aa9c6bb53925fac0bda95af5de3e53a51a3ce6add733b8896d009c7/github_actions_ai_analyzer-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-02 06:08:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "scottlz0310",
"github_project": "Github-Actions-AI-Analyzer#readme",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "github-actions-ai-analyzer"
}