172 lines
5.5 KiB
Markdown
172 lines
5.5 KiB
Markdown
# CI/CDパイプライン実装計画
|
||
|
||
## 📋 概要
|
||
TradingAgentsプロジェクトのCI/CDパイプラインを構築し、コード品質の自動化と継続的デリバリーを実現します。
|
||
|
||
## 🎯 目標
|
||
1. **品質保証**: 自動テスト、リンティング、型チェックの実施
|
||
2. **継続的統合**: コード変更時の自動ビルドとテスト
|
||
3. **セキュリティ**: APIキーや機密情報の適切な管理
|
||
4. **ドキュメント**: 自動生成とデプロイ
|
||
|
||
## 🏗️ アーキテクチャ
|
||
|
||
### 技術スタック
|
||
- **CI/CDプラットフォーム**: GitHub Actions
|
||
- **テストフレームワーク**: pytest
|
||
- **コード品質ツール**:
|
||
- Black (フォーマッター)
|
||
- Ruff (リンター)
|
||
- mypy (型チェッカー)
|
||
- **カバレッジ**: pytest-cov
|
||
- **セキュリティスキャン**: bandit
|
||
|
||
## 📝 実装タスク
|
||
|
||
### フェーズ1: テスト基盤の構築
|
||
- [ ] pytestのセットアップ
|
||
- [ ] テストディレクトリ構造の作成
|
||
- [ ] 基本的なユニットテストの実装
|
||
- [ ] テストカバレッジの設定
|
||
|
||
### フェーズ2: GitHub Actionsワークフロー
|
||
- [ ] 基本的なCI/CDワークフローの作成
|
||
- [ ] プルリクエスト時の自動テスト
|
||
- [ ] mainブランチへのマージ時の品質チェック
|
||
- [ ] 依存関係のキャッシング
|
||
|
||
### フェーズ3: コード品質の自動化
|
||
- [ ] リンティング(Ruff)の統合
|
||
- [ ] フォーマッティング(Black)の統合
|
||
- [ ] 型チェック(mypy)の統合
|
||
- [ ] コードカバレッジレポート
|
||
|
||
### フェーズ4: セキュリティと最適化
|
||
- [ ] セキュリティスキャンの実装
|
||
- [ ] APIキーの安全な管理
|
||
- [ ] ワークフロー最適化
|
||
- [ ] 並列実行の設定
|
||
|
||
## 🔧 ワークフロー設計
|
||
|
||
### 1. プルリクエストワークフロー (`pr.yml`)
|
||
```yaml
|
||
トリガー: プルリクエストのオープン/更新
|
||
ジョブ:
|
||
- コード品質チェック (Black, Ruff, mypy)
|
||
- ユニットテスト実行
|
||
- テストカバレッジレポート
|
||
- セキュリティスキャン
|
||
```
|
||
|
||
### 2. メインブランチワークフロー (`main.yml`)
|
||
```yaml
|
||
トリガー: mainブランチへのプッシュ
|
||
ジョブ:
|
||
- 完全なテストスイート実行
|
||
- 統合テスト
|
||
- パフォーマンステスト(オプション)
|
||
- ドキュメント生成
|
||
```
|
||
|
||
### 3. リリースワークフロー (`release.yml`)
|
||
```yaml
|
||
トリガー: タグのプッシュ
|
||
ジョブ:
|
||
- バージョン管理
|
||
- パッケージビルド
|
||
- PyPIへの公開(将来的に)
|
||
- リリースノート生成
|
||
```
|
||
|
||
## 📂 ディレクトリ構造
|
||
|
||
```
|
||
TradingAgents/
|
||
├── .github/
|
||
│ └── workflows/
|
||
│ ├── pr.yml # PRワークフロー
|
||
│ ├── main.yml # メインブランチワークフロー
|
||
│ └── release.yml # リリースワークフロー
|
||
├── tests/
|
||
│ ├── __init__.py
|
||
│ ├── conftest.py # pytest設定
|
||
│ ├── unit/ # ユニットテスト
|
||
│ │ ├── agents/
|
||
│ │ ├── dataflows/
|
||
│ │ └── graph/
|
||
│ ├── integration/ # 統合テスト
|
||
│ └── fixtures/ # テストデータ
|
||
├── .coveragerc # カバレッジ設定
|
||
├── pytest.ini # pytest設定
|
||
├── pyproject.toml # プロジェクト設定
|
||
└── tox.ini # 複数環境テスト設定
|
||
```
|
||
|
||
## 🔐 セキュリティ考慮事項
|
||
|
||
1. **APIキー管理**:
|
||
- GitHub Secretsを使用
|
||
- 環境変数経由でのアクセス
|
||
- テスト用モックの実装
|
||
|
||
2. **依存関係管理**:
|
||
- Dependabotの有効化
|
||
- 脆弱性スキャン
|
||
- 定期的な更新
|
||
|
||
3. **コードセキュリティ**:
|
||
- banditによる静的解析
|
||
- セキュリティポリシーの定義
|
||
|
||
## 📊 成功指標
|
||
|
||
- **テストカバレッジ**: 70%以上
|
||
- **ビルド時間**: 5分以内
|
||
- **コード品質スコア**: A評価
|
||
- **セキュリティ脆弱性**: 0件(高・中リスク)
|
||
|
||
## 🚀 実装ステップ
|
||
|
||
### ステップ1: テスト環境のセットアップ(Day 1)
|
||
```bash
|
||
# テスト関連パッケージのインストール
|
||
pip install pytest pytest-cov pytest-mock pytest-asyncio
|
||
|
||
# テストディレクトリの作成
|
||
mkdir -p tests/unit/agents tests/unit/dataflows tests/unit/graph
|
||
mkdir -p tests/integration tests/fixtures
|
||
```
|
||
|
||
### ステップ2: 基本的なテストの作成(Day 1-2)
|
||
- エージェントクラスのユニットテスト
|
||
- データフロー関数のテスト
|
||
- グラフロジックのテスト
|
||
|
||
### ステップ3: GitHub Actionsワークフローの実装(Day 2-3)
|
||
- 基本的なCIワークフロー作成
|
||
- 段階的な機能追加
|
||
- 動作確認とデバッグ
|
||
|
||
### ステップ4: 最適化と文書化(Day 3-4)
|
||
- パフォーマンス最適化
|
||
- ドキュメント更新
|
||
- チーム向けガイドライン作成
|
||
|
||
## 📚 参考資料
|
||
|
||
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
|
||
- [pytest Documentation](https://docs.pytest.org/)
|
||
- [Python CI/CD Best Practices](https://realpython.com/python-continuous-integration/)
|
||
|
||
## ✅ 完了基準
|
||
|
||
- [ ] すべてのテストが自動実行される
|
||
- [ ] コード品質チェックが自動化される
|
||
- [ ] PRマージ前の品質ゲートが機能する
|
||
- [ ] ドキュメントが最新化される
|
||
- [ ] チームメンバーが使用方法を理解している
|
||
|
||
---
|
||
|
||
*この計画は段階的に実装され、プロジェクトのニーズに応じて調整されます。* |