跳到內容
getnextpdf.com

Enterprise 版本

發行

NextPDF Enterprise 將一次發行建模為一組具型別的值物件——一個發行資訊清單、逐成品的資訊清單、建置設定檔、散布通道,以及存取邊界——並衍生出一份發布計畫,將每個成品路由到正確的通道與存取邊界。

此能力隨附於 NextPDF Enterprisenextpdf/enterprise),並以 Enterprise 級別的授權封套啟用。未持有該權利的部署不會載入此能力的類別。比較各版本並取得授權

Terminal window
composer require nextpdf/enterprise:^3

ReleaseManifest 是一個版本不可變的頂層文件。它記錄語意版本號、來源 commit、建置時間戳記、逐成品資訊清單的清單,以及選用的供應鏈佐證路徑(SBOM、GPG 簽章、checksum)。其結構描述版本遵循「新增為次版號、破壞性變更為主版號」。

ArtifactManifest 記錄一個已建置的成品:其正規檔名、版本、來源 commit、目標版本、交付模式、編碼技術、散布通道、目標 PHP 版本、SHA-256 摘要、選用的編碼到期時間,以及建置時間戳記。EncodingTechnology 區分用於編碼成品的工具,與是否曾經編碼這兩件事;一個明文成品一律帶有 None

DistributionChannel 明確分離兩個關注點:一個成品來源(二進位儲存)與一個套件取用層composer require 所讀取的登錄)。AccessBoundary 決定誰可以存取一個成品——付費客戶、限時評估,或永不面向客戶的內部 CI/QA/staging——且每個邊界都需要驗證。

PublishingPlan 由建置設定檔與發行資訊清單衍生而來。每個設定檔解析為發布目標:一個成品來源目標與一個取用層目標,並套用正確的存取邊界,讓付費與評估成品被路由到正確的位置。

這個承重的決策,是將一次發行建模為不可變的具型別值物件,而非鬆散的組態。成品來源與取用層是各自獨立、以列舉為型別的關注點,而存取邊界是明確的。因此一個被誤路由的成品——一個被放上客戶通道的內部建置——會浮現為一個建模錯誤,而非一個無聲的正式環境失誤。此計畫維持為衍生而非權威:它指名預期的目標,而由你的發行工具執行傳輸。同一組物件會透過 Core 合約解析,因此升級版本的取用方不需變更任何呼叫端程式碼。這份延續性正是 open-core 邊界的重點——你買的是 Enterprise 介面,而非一次重寫。 設計背景:Open core,不綁定

ClassResponsibility
ReleaseManifest不可變的頂層發行文件。
ArtifactManifest逐成品的中繼資料與驗證欄位。
BuildProfile要發布的一份建置設定。
DistributionChannel來源 vs 取用層的通道列舉。
AccessBoundaryPaid / Evaluation / Internal 存取列舉。
EncodingTechnology編碼工具列舉(例如 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 簽章、checksum)。本模組記錄並路由那些參照;它本身不產生簽章,也不證明來源。請將資訊清單視為待由你的發行管線驗證的中繼資料,而非其本身就是證明。

發行資訊清單包含建置與成品中繼資料,而非個人資料。請對成品儲存套用你的一般控制措施。

發行日誌應記錄版本與通道,而非簽署金鑰材料或內部儲存路徑。

本模組不主張任何標準一致性;它是一個發行建模層。供應鏈佐證(SBOM、簽章、checksum)由資訊清單參照,並由你的發行工具產生與驗證。

本模組不執行任何密碼學操作。GPG 簽署與 checksum 產生由外部發行工具執行,此處僅作參照。

輸入是呼叫端提供的建置設定檔與資訊清單資料。本模型讓來源-vs-取用與存取邊界的區分變得明確,因此誤路由(例如曝露一個內部成品)會是一個可見的建模錯誤,而非一個無聲的錯誤。

  • ReleaseManifest 是一個版本不可變的頂層文件;其結構描述版本遵循「新增為次版號、破壞性變更為主版號」。
  • DistributionChannel 將成品來源與套件取用層維持為各自獨立的關注點;將兩者混為一談是一個建模錯誤,而本型別讓它變得明確。
  • AccessBoundary 區分 Paid / Evaluation / Internal,且每個邊界都需要驗證;一個 Internal 成品永不面向客戶。
  • PublishingPlan 由建置設定檔與發行資訊清單衍生而來;它描述的是預期的目標,對傳輸而言不具權威性。

本頁僅記載外部可觀察的行為與受支援的公開 API 介面。內部命名空間路徑、輔助類別、機制表、runbook 檔名,以及工單前綴皆不在範圍內。

NextPDF Core 沒有任何發行建模層。需要發行資訊清單、建置設定檔或發布計畫的僅有 Core 的取用方,必須自行建模。

NextPDF Pro 不提供具型別的發行資訊清單、建置設定檔、存取邊界或衍生的發布計畫;它們僅隨附於 nextpdf/enterprise 套件。僅有 Pro 的部署沒有 Enterprise 元件可滿足發行建模請求。Enterprise 介面請參閱 Enterprise 概觀

資訊清單結構描述、來源-vs-取用的區分,以及存取邊界路由皆僅以行為層級描述。內部的通道解析表與內部的發布目標接線不在公開介面的範圍內,此處不予重現。

發布計畫是衍生中繼資料,不是傳輸:實際的成品上傳由你的發行工具執行。供應鏈佐證(SBOM、GPG 簽章、checksum)由資訊清單參照,並由你的發行管線(而非本模組)產生與驗證。逐通道的路由、憑證與儲存是操作者的責任。

本頁描述一個發行建模層。它記錄並路由供應鏈佐證的參照;它本身不產生簽章、不證明來源、不認證任何發行,也不構成法律建議。將資訊清單視為其本身就是證明是不正確的;驗證由你的發行管線執行。判斷一次發行是否符合你的合約或法規義務,是你的責任。