YamlGuardian
このプロジェクトでは、継続的インテグレーションに GitHub Actions を使用しています。CI ワークフローは、.github/workflows/ci.yml
ファイルで定義されています。すべてのプッシュおよびプルリクエストでテストを実行し、コードベースが安定していることを確認します。
CI ワークフローに新しい自動マージ機能を追加しました。この機能は、すべての CI チェックに合格した場合にプルリクエストを自動的にマージします。自動マージプロセスは、peter-evans/merge
GitHub Action によって処理されます。これにより、すべてのチェックに合格した PR のみがマージされ、コードベースの安定性が維持されます。
- Python 3.8 以降
- Poetry
Poetry がインストールされていない場合は、次のコマンドを使用してインストールできます。
curl -sSL https://install.python-poetry.org | python3 -
- リポジトリをクローンします。
git clone https://github.com/nobu007/YamlGuardian.git
cd YamlGuardian
- Poetry を使用して依存関係をインストールします。
poetry install
次のコマンドを使用してテストを実行できます。
poetry run python -m unittest discover -s tests
エッジケーステストを実行するには、次のコマンドを使用します。
poetry run python -m unittest tests/test_validate.py
ディレクトリ構造を分析し、必要な変更を特定するには、次のスクリプトを実行します。
poetry run python yamlguardian/directory_analyzer.py
特定された変更は、ルートディレクトリにある directory_structure_changes.csv
という名前の CSV ファイルに保存されます。
ディレクトリ構造を分析し、変更を CSV ファイルに保存するには、YamlGuardian
の analyze_and_save_directory_structure
メソッドを使用します。
from yamlguardian.core import YamlGuardian
guardian = YamlGuardian(schema_file='path/to/schema.yaml')
guardian.analyze_and_save_directory_structure(root_dir='path/to/root_dir', csv_file='path/to/output.csv')
uvicorn
を使用して FastAPI サーバーを実行するには、次のコマンドを使用します。
uvicorn main:app --reload
/validate
エンドポイントを使用して YAML データを検証するには、リクエスト本文に YAML コンテンツを含めて http://127.0.0.1:8000/validate
に POST リクエストを送信します。次に例を示します。
curl -X POST "http://127.0.0.1:8000/validate" -H "Content-Type: application/json" -d '{"yaml_content": "name: John\nage: 30"}'
CI エラーが発生した場合は、次の手順に従って解決してください。
- CI ログの確認: GitHub Actions タブでログを確認し、エラーの原因を特定します。
- 一般的な問題:
- 依存関係の問題: すべての依存関係が
pyproject.toml
で正しく指定されていることを確認し、poetry install
を実行してインストールします。 - テストの失敗:
poetry run python -m unittest discover -s tests
を使用してローカルでテストを実行し、失敗しているテストを特定して修正します。 - Lint エラー: コードがプロジェクトの Lint ルールに準拠していることを確認します。
poetry run flake8
を実行して Lint エラーを確認し、それに応じて修正します。
- 依存関係の問題: すべての依存関係が
- CI ワークフローの再実行: 問題を修正した後、変更をプッシュして CI ワークフローを再度トリガーします。
詳細な設計ドキュメントについては、DESIGN.md ファイルを参照してください。