renmori verify
renmori verify は、保護済みビルド自身の renmori-manifest.json に基づき、保護の完了後にビルドが変更されていないか、実行に必要なファイルが欠けていないか、そしてディスク上に直接抽出可能な平文のスクリプトやアーカイブが残っていないかを確認します。ファイルの読み取りのみを行い、内容は一切変更しないため、リリース前に手動で実行することも、CI パイプラインのゲートとして使用することもできます。
構文
検証項目
ビルドマニフェストがない場合に直ちに終了する点を除き、その他の検証結果はまとめて報告されます。いずれかの検証が失敗すると、コマンドはすべての問題を列挙して終了コード 1 で終了します。
コンテナのハッシュ検証では、保護後にコンテナが差し替えられた場合、切り詰められた場合や転送中に破損した場合、およびビルドマニフェストが別の保護処理によるものである場合を検出できます。平文の残存検証は cache/ ディレクトリも対象とします。このディレクトリ内の .rpyb ファイルにはスクリプトのコンパイル済みバイトコードが含まれているためです。
検証の対象外
verify は静的なファイル検査であり、以下は対象外です。
- ゲームを実行せず、コンテナも復号しないため、すべてのアセットをエンジンが正しく読み込めるかは確認できない。エンドツーエンドの検証には、実際の Ren'Py SDK で保護済みビルドを読み込むリポジトリの
tools/verify_in_renpy.pyを使用できる game/以外のファイル(各プラットフォームのランチャーやlib/内のランタイムなど)は検査しないexcludeまたはkeep_on_diskによってディスク上に保持されたスクリプト以外のファイルは検査しない(これらのファイルは設計上、平文で存在する)- ビルドに使用された保護強度がリリース要件を満たしているかは判断しない。保護強度はマニフェストの
strengthフィールドに記録されており、パイプラインで別途確認できる
出力
進捗情報は stderr に、最終行の JSON は stdout に出力されます。
検証に合格した場合:
検証に失敗した場合:
ビルドマニフェストがない場合:
各フィールドの意味と終了コードは出力・ビルドマニフェスト・終了コードを参照してください。
終了コード
例
リリース前に手動で検証する場合:
CI のゲートとして使用し、JSON のみを出力する場合:
シェルスクリプトで結果に応じてアップロードを続行するか判断する場合:
protect と verify の間でビルドに変更を加えてはいけません。内容を調整する必要がある場合は、保護済みディレクトリを変更するのではなく、新しい配布用ビルドまたはバックアップから protect をやり直してください。