新しいハーネスアダプターの作成
新しい Apothem ハーネスアダプターを作成・公開するためのランブック。
Apothem へのファーストパーティ組み込み、またはサードパーティパッケージとして 新しいハーネスアダプターを作成する際は、このランブックを使用してください。
前提条件
- HarnessAdapter プロトコルへの理解
- 対象ハーネスの構成フォーマットの理解
- Python 3.10+
手順
1. アダプターを実装する
ハーネスアダプターの作成の例に従い、
対象ハーネス向けに HarnessAdapter を実装します。
アダプターがプレーンテキストのテンプレート(JSON でも YAML でもないファイル)を
mode: write_text と ownership_class: operator-owned で書き込む場合、uninstall
がそのファイルを削除するのは、それが Apothem の出荷したテンプレートの未編集のコピーである間だけです。
後のリリースでテンプレートが変更されたときは、同じ変更の中で、以前のテキストの SHA-256 ダイジェストを
そのマニフェストエントリーの earlier_digests リストに追加してください。そうしないと、uninstall は
以前のリリースが書き込んだ未編集のコピーをすべてその場に残します。ダイジェストは、最新のリリースタグにおけるテキストから
git show <tag>:<template path> | sha256sum で取得します。テンプレートには
${...} のパストークンを含めてはなりません。出荷されたテンプレートが考慮されていない場合、
tests/unit/test_template_digests.py は失敗します。
2. ドキュメントページを書く
site/content/docs/harnesses/<slug>.mdx を作成し、次の内容を扱います。
- インストールフロー
- プロファイルからネイティブ構成へのマッピング
- 互換性に関する注意点
- 検証レシピ
- 更新・アンインストールレシピ
- コンフォーミティゲートの面
- トラブルシューティング表
- 構成つまみの表
3. テストを書く
tests/packaging/test_<slug>_adapter.py
tests/unit/test_<slug>_adapter.py最低限のテストカバレッジ:
test_install_creates_expected_filestest_verify_passes_after_installtest_uninstall_removes_files
4. ローカルで検証する
apothem install --harness <slug>
apothem verify --harness <slug>
python -m apothem.conformity.gate --all .5. プルリクエストを提出する
次の内容を含む PR を作成します。
- アダプターの実装
site/content/docs/harnesses/<slug>.mdxのドキュメントページ- テスト
pyproject.tomlでのエントリーポイント登録、src/apothem/lib/harness_registry_data.pyのHARNESS_REGISTRYのエントリー(そこでSUPPORTED_HARNESS_COUNTを更新する)、およびsrc/apothem/schemas/profile.schema.jsonのharnessId列挙への ID の追加- 変更履歴のエントリー