コンテンツにスキップ
getnextpdf.com

Enterprise エディション

リリース

NextPDF Enterprise は、リリースを型付きの値オブジェクト(リリースマニフェスト、アーティファクトごとのマニフェスト、ビルドプロファイル、ディストリビューションチャネル、アクセス境界)としてモデル化し、各アーティファクトを正しいチャネルとアクセス境界にルーティングするパブリッシングプランを導出します。

この機能は NextPDF Enterprisenextpdf/enterprise)に同梱されており、Enterprise ティアのライセンスエンベロープで有効化されます。そのエンタイトルメントを持たないデプロイでは、この機能のクラスはロードされません。エディションを比較してライセンスを取得

Terminal window
composer require nextpdf/enterprise:^3

ReleaseManifest は、あるバージョンに対するイミュータブルな最上位ドキュメントです。セマンティックバージョン、ソースコミット、ビルドタイムスタンプ、アーティファクトごとのマニフェストのリスト、およびオプションのサプライチェーン証跡パス(SBOM、GPG 署名、チェックサム)を記録します。そのスキーマバージョンは、追加に対してはマイナー、破壊的変更に対してはメジャーに従います。

ArtifactManifest は、ビルドされた 1 つのアーティファクトを記録します。正規のファイル名、バージョン、ソースコミット、ターゲットエディション、デリバリーモード、エンコーディング技術、ディストリビューションチャネル、ターゲット PHP バージョン、SHA-256 ダイジェスト、オプションのエンコーディング有効期限、およびビルドタイムスタンプです。EncodingTechnology は、アーティファクトがそもそもエンコードされたかどうかとは別に、アーティファクトをエンコードするために使用されたツールを区別します。クリアテキストのアーティファクトは常に None を持ちます。

DistributionChannel は、2 つの関心事を明示的に分離します。アーティファクトのオリジン(バイナリストレージ)と、パッケージの消費レイヤーcomposer require が読み取るレジストリ)です。AccessBoundary は、誰がアーティファクトにアクセスできるか(有料顧客、期間限定の評価版、または顧客向けには決して公開されない内部 CI/QA/ステージング)を決定し、すべての境界が認証を必要とします。

PublishingPlan は、ビルドプロファイルとリリースマニフェストから導出されます。各プロファイルはパブリッシングターゲット(アーティファクトオリジンターゲットと消費レイヤーターゲット)に解決され、有料アーティファクトと評価版アーティファクトが正しい場所にルーティングされるよう、適切なアクセス境界が適用されます。

要となる設計判断は、リリースを緩い構成ではなく、イミュータブルな型付き値オブジェクトとしてモデル化することです。アーティファクトのオリジンと消費レイヤーは別個の enum 型の関心事であり、アクセス境界は明示的です。そのため、誤ルーティングされたアーティファクト(顧客チャネルに配置された内部ビルド)は、暗黙的なプロダクションのミスではなく、モデリングエラーとして表面化します。プランは権威あるものではなく導出されたままです。意図されたターゲットを指定する一方で、実際のトランスポートはお客様のリリースツールが実行します。同じオブジェクトが Core コントラクトを通じて解決されるため、エディションをアップグレードするコンシューマーは呼び出し側コードを変更しません。その連続性こそがオープンコア境界の要点です。お客様が購入するのは Enterprise サーフェスであり、書き直しではありません。 設計背景: オープンコア、ロックインなし

クラス責務
ReleaseManifestイミュータブルな最上位リリースドキュメント。
ArtifactManifestアーティファクトごとのメタデータと検証フィールド。
BuildProfileパブリッシュ対象のビルド構成。
DistributionChannelオリジンと消費レイヤーのチャネル enum。
AccessBoundaryPaid / Evaluation / Internal アクセスの enum。
EncodingTechnologyエンコーディングツールの enum(例: encoded / none)。
PublishingPlan / PublishingTarget導出されたプランとターゲットごとのルーティング。
use NextPDF\Enterprise\Release\PublishingPlan;
$plan = PublishingPlan::fromProfiles($profiles, '3.1.0');
use NextPDF\Enterprise\Release\PublishingPlan;
use NextPDF\Enterprise\Release\PublishingEnvironment;
$plan = PublishingPlan::fromProfiles(
$profiles,
'3.1.0',
PublishingEnvironment::Production,
);
foreach ($plan->targets as $target) {
$logger->info('release.target', [
'version' => $plan->version,
'channel' => $target->channel->value,
]);
}
  • アーティファクトのオリジンと消費レイヤーは、別個のチャネルです。オリジンはバイナリを保管し、消費レイヤーはそれを指し示すメタデータを提供します。composer require がどこで解決されるかを考える際に、これらを混同しないでください。
  • クリアテキストのアーティファクトは常に EncodingTechnology::None を報告します。エンコーディング技術フィールドは「どのツールか」に答えるものであり、「保護されたか」に答えるものではありません。
  • Internal アクセス境界のアーティファクトは、顧客向けには決して公開されません。それを顧客チャネルにルーティングすることは、このモデルが明示的にするように設計された構成エラーです。
  • パブリッシングプランは導出されたものであり、トランスポートに対して権威あるものではありません。意図されたターゲットを記述したものであり、実際のアップロードはお客様のリリースツールによって実行されます。

プランの導出は、ビルドプロファイルの数に対して線形であり、プロファイルごとに少数のターゲットを生成します。値オブジェクトはイミュータブルであり、構築が安価です。

リリースマニフェストは、サプライチェーン証跡パス(SBOM、GPG 署名、チェックサム)を保持します。このモジュールは、それらの参照を記録およびルーティングしますが、それ自体が署名を生成したり来歴を証明したりするものではありません。マニフェストは、それ単独での証拠としてではなく、お客様のリリースパイプラインによって検証されるべきメタデータとして扱ってください。

リリースマニフェストには、個人データではなく、ビルドとアーティファクトのメタデータが含まれます。アーティファクトストレージには、お客様の通常の管理策を適用してください。

リリースログには、署名鍵マテリアルや内部ストレージパスではなく、バージョンとチャネルを記録すべきです。

このモジュールについて、標準への適合は主張しません。これはリリースモデリングレイヤーです。サプライチェーン証跡(SBOM、署名、チェックサム)は、マニフェストによって参照され、お客様のリリースツールによって生成および検証されます。

このモジュールは暗号操作を一切行いません。GPG 署名とチェックサム生成は外部のリリースツールによって実行され、ここでは参照されるのみです。

入力は、呼び出し元が提供するビルドプロファイルとマニフェストデータです。このモデルは、オリジン対消費の区別とアクセス境界の区別を明示的にするため、誤ルーティング(たとえば内部アーティファクトの露出)は、暗黙的なものではなく、目に見えるモデリングエラーになります。

  • ReleaseManifest は、あるバージョンに対するイミュータブルな最上位ドキュメントです。そのスキーマバージョンは、追加に対してはマイナー、破壊的変更に対してはメジャーに従います。
  • DistributionChannel は、アーティファクトのオリジンとパッケージの消費レイヤーを別個の関心事として保ちます。これらを混同することは、この型が明示的にするモデリングエラーです。
  • AccessBoundary は Paid / Evaluation / Internal を区別し、すべての境界が認証を必要とします。Internal アーティファクトは、顧客向けには決して公開されません。
  • PublishingPlan は、ビルドプロファイルとリリースマニフェストから導出されます。意図されたターゲットを記述したものであり、トランスポートに対して権威あるものではありません。

このページは、外部から観測可能な挙動とサポート対象の公開 API サーフェスのみを記述しています。内部名前空間パス、ヘルパークラス、メカニズムテーブル、ランブックのファイル名、チケットプレフィックスは対象外です。

NextPDF Core には、リリースモデリングレイヤーがありません。リリースマニフェスト、ビルドプロファイル、またはパブリッシングプランを必要とする Core のみのコンシューマーは、それらを自分でモデル化しなければなりません。

NextPDF Pro は、型付きのリリースマニフェスト、ビルドプロファイル、アクセス境界、または導出されるパブリッシングプランを提供しません。これらは nextpdf/enterprise パッケージにのみ同梱されています。Pro のみのデプロイには、リリースモデリングの要求を満たす Enterprise コンポーネントがありません。Enterprise サーフェスについては Enterprise の概要 を参照してください。

マニフェストスキーマ、オリジン対消費の区別、アクセス境界のルーティングは、挙動レベルでのみ記述されています。内部のチャネル解決テーブルと内部のパブリッシングターゲットの配線は、パブリックサーフェスの対象外であり、ここでは複製していません。

パブリッシングプランは導出されたメタデータであり、トランスポートではありません。実際のアーティファクトのアップロードは、お客様のリリースツールによって実行されます。サプライチェーン証跡(SBOM、GPG 署名、チェックサム)は、マニフェストによって参照され、このモジュールではなくお客様のリリースパイプラインによって生成および検証されます。各チャネルのルーティング、認証情報、ストレージは、オペレーターの責任です。

このページは、リリースモデリングレイヤーについて説明しています。サプライチェーン証跡への参照を記録およびルーティングしますが、それ自体が署名を生成したり、来歴を証明したり、リリースを認証したり、法的助言を構成したりするものではありません。マニフェストをそれ単独での証拠として扱うことは誤りです。検証はお客様のリリースパイプラインによって実行されます。リリースが契約上または規制上の義務を満たしているかどうかの判断は、お客様の責任です。