Ga naar inhoud
getnextpdf.com

Enterprise editie

Release

NextPDF Enterprise modelleert een release als getypeerde value objects — een releasemanifest, manifesten per artefact, build-profielen, distributiekanalen en toegangsgrenzen — en leidt een publicatieplan af dat elk artefact naar het juiste kanaal en de juiste toegangsgrens routeert.

Deze functie wordt geleverd in NextPDF Enterprise (nextpdf/enterprise) en wordt geactiveerd met een licentie-envelop op Enterprise-niveau. Een implementatie zonder die rechten laadt de klassen van de functie niet. Vergelijk edities en vraag een licentie aan.

Terminal window
composer require nextpdf/enterprise:^3

ReleaseManifest is het onveranderlijke document op het hoogste niveau voor een versie. Het registreert de semantische versie, de source commit, het build-tijdstempel, de lijst met manifesten per artefact en optionele bewijspaden voor de toeleveringsketen (SBOM, GPG-handtekening, checksums). De schemaversie volgt minor-voor-additief, major-voor-breaking.

ArtifactManifest registreert één gebouwd artefact: de canonieke bestandsnaam, versie, source commit, doeleditie, leveringsmodus, encoderingstechnologie, distributiekanaal, doel-PHP-versie, SHA-256-digest, optionele encoderingsvervaldatum en build-tijdstempel. EncodingTechnology onderscheidt de tool die is gebruikt om een artefact te encoderen van de vraag of het überhaupt is geëncodeerd; een cleartext-artefact heeft altijd None.

DistributionChannel scheidt twee aspecten expliciet: een artefactoorsprong (binaire opslag) en een pakketconsumptielaag (het register dat een composer require leest). AccessBoundary bepaalt wie een artefact mag benaderen — betalende klanten, tijdgebonden evaluatie of interne CI/QA/staging die nooit klantgericht is — en elke grens vereist authenticatie.

PublishingPlan wordt afgeleid uit de build-profielen en het releasemanifest. Elk profiel resolveert naar publicatiedoelen: een artefactoorsprong-doel en een consumptielaag-doel, met de juiste toegangsgrens toegepast, zodat betaalde en evaluatie-artefacten naar de juiste plek worden gerouteerd.

De dragende beslissing is om een release te modelleren als onveranderlijke getypeerde value objects, niet als losse configuratie. Artefactoorsprong en consumptielaag zijn onderscheiden, enum-getypeerde aspecten, en toegangsgrenzen zijn expliciet. Zo komt een verkeerd gerouteerd artefact — een interne build die op een klantkanaal wordt geplaatst — naar boven als een modelleringsfout, niet als een stilzwijgende productiefout. Het plan blijft afgeleid in plaats van gezaghebbend: het benoemt beoogde doelen terwijl je release-tooling het transport uitvoert. Dezelfde objecten resolveren via het Core-contract, zodat een consument die van editie upgradet geen aanroepende code hoeft te wijzigen. Die continuïteit is het punt van een open-core-grens — je koopt het Enterprise-oppervlak, geen herschrijving. Ontwerpachtergrond: Open core, geen lock-in.

KlasseVerantwoordelijkheid
ReleaseManifestOnveranderlijk releasedocument op het hoogste niveau.
ArtifactManifestMetadata en verificatievelden per artefact.
BuildProfileEen te publiceren buildconfiguratie.
DistributionChannelEnum voor oorsprong versus consumptielaag-kanaal.
AccessBoundaryEnum Paid / Evaluation / Internal-toegang.
EncodingTechnologyEnum voor encoderingstool (bijv. encoded / none).
PublishingPlan / PublishingTargetAfgeleid plan en routering per doel.
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,
]);
}
  • De artefactoorsprong en de consumptielaag zijn onderscheiden kanalen. De oorsprong slaat de binary op; de consumptielaag levert de metadata die ernaar verwijst. Haal ze niet door elkaar bij het redeneren over waar een composer require resolveert.
  • Een cleartext-artefact rapporteert altijd EncodingTechnology::None; het encoderingstechnologie-veld beantwoordt “welke tool”, niet “was het beschermd”.
  • Artefacten met een Internal-toegangsgrens zijn nooit klantgericht; ze naar een klantkanaal routeren is een configuratiefout die dit model expliciet wil maken.
  • Het publicatieplan is afgeleid, niet gezaghebbend voor transport — het beschrijft beoogde doelen; de werkelijke upload wordt uitgevoerd door je release-tooling.

Planafleiding is lineair in het aantal build-profielen en produceert een klein aantal doelen per profiel. De value objects zijn onveranderlijk en goedkoop te construeren.

Het releasemanifest draagt bewijspaden voor de toeleveringsketen (SBOM, GPG-handtekening, checksums). Deze module registreert en routeert die referenties; ze produceert zelf geen handtekeningen en attesteert geen herkomst. Behandel het manifest als metadata die door je release-pijplijn moet worden geverifieerd, niet als bewijs op zichzelf.

Releasemanifesten bevatten build- en artefactmetadata, geen persoonsgegevens. Pas je gebruikelijke controles toe op artefactopslag.

Releaselogs zouden versie en kanaal moeten registreren, geen ondertekeningssleutelmateriaal of interne opslagpaden.

Er wordt geen conformiteit met standaarden geclaimd voor deze module; het is een releasemodelleringslaag. Het bewijs voor de toeleveringsketen (SBOM, handtekeningen, checksums) wordt door het manifest gerefereerd en door je release-tooling geproduceerd en geverifieerd.

Deze module voert geen cryptografische bewerkingen uit. GPG-ondertekening en checksum-generatie worden uitgevoerd door externe release-tooling en hier alleen gerefereerd.

De invoer bestaat uit door de caller aangeleverde build-profielen en manifestgegevens. Het model maakt het onderscheid tussen oorsprong-versus-consumptie en de toegangsgrens expliciet, zodat misrouting (bijvoorbeeld het blootstellen van een intern artefact) een zichtbare modelleringsfout is in plaats van een stilzwijgende.

  • ReleaseManifest is het onveranderlijke document op het hoogste niveau voor een versie; de schemaversie volgt minor-voor-additief, major-voor-breaking.
  • DistributionChannel houdt artefactoorsprong en pakketconsumptielaag als onderscheiden aspecten; ze door elkaar halen is een modelleringsfout die dit type expliciet maakt.
  • AccessBoundary onderscheidt Paid / Evaluation / Internal, en elke grens vereist authenticatie; een Internal-artefact is nooit klantgericht.
  • PublishingPlan wordt afgeleid uit build-profielen en het releasemanifest; het beschrijft beoogde doelen en is niet gezaghebbend voor transport.

Deze pagina documenteert alleen extern waarneembaar gedrag en het ondersteunde publieke API-oppervlak. Interne namespace-paden, helperklassen, mechanismetabellen, runbook-bestandsnamen en ticketprefixen vallen buiten de scope.

NextPDF Core heeft geen releasemodelleringslaag. Een Core-only-consument die releasemanifesten, build-profielen of een publicatieplan nodig heeft, moet ze zelf modelleren.

NextPDF Pro biedt niet de getypeerde releasemanifesten, build-profielen, toegangsgrenzen of het afgeleide publicatieplan; die worden alleen geleverd in het nextpdf/enterprise-pakket. Een Pro-only-implementatie heeft geen Enterprise-component om een releasemodelleringsverzoek te vervullen. Zie het Enterprise-overzicht voor het Enterprise-oppervlak.

Het manifestschema, het onderscheid tussen oorsprong-versus-consumptie en de routering op basis van toegangsgrenzen worden alleen op gedragsniveau beschreven. De interne kanaalresolutietabellen en de interne publicatiedoel-bedrading vallen buiten de scope van het publieke oppervlak en worden hier niet gereproduceerd.

Het publicatieplan is afgeleide metadata, niet het transport: de werkelijke artefactupload wordt uitgevoerd door je release-tooling. Het bewijs voor de toeleveringsketen (SBOM, GPG-handtekening, checksums) wordt door het manifest gerefereerd en door je release-pijplijn geproduceerd en geverifieerd, niet door deze module. Routering, referenties en opslag voor elk kanaal vallen onder de verantwoordelijkheid van de operator.

Deze pagina beschrijft een releasemodelleringslaag. Deze registreert en routeert referenties naar bewijs voor de toeleveringsketen; ze produceert zelf geen handtekeningen, attesteert geen herkomst, certificeert geen release en vormt geen juridisch advies. Het manifest als bewijs op zichzelf behandelen is onjuist; de verificatie wordt uitgevoerd door je release-pijplijn. Beoordelen of een release voldoet aan je contractuele of regelgevende verplichtingen is jouw verantwoordelijkheid.