콘텐츠로 이동
getnextpdf.com

Enterprise 에디션

릴리스

NextPDF Enterprise는 릴리스를 타입이 지정된 값 객체 — 릴리스 매니페스트, 아티팩트별 매니페스트, 빌드 프로파일, 배포 채널, 액세스 경계 — 로 모델링하고, 각 아티팩트를 올바른 채널과 액세스 경계로 라우팅하는 게시 계획을 도출합니다.

이 기능은 NextPDF Enterprise(nextpdf/enterprise)에 포함되며 Enterprise 계층 라이선스 봉투로 활성화됩니다. 해당 권한이 없는 배포는 이 기능의 클래스를 로드하지 않습니다. 에디션 비교 및 라이선스 받기.

Terminal window
composer require nextpdf/enterprise:^3

ReleaseManifest는 한 버전에 대한 불변의 최상위 문서입니다. 시맨틱 버전, 소스 커밋, 빌드 타임스탬프, 아티팩트별 매니페스트의 목록, 그리고 선택적 공급망 증거 경로(SBOM, GPG 서명, 체크섬)를 기록합니다. 그 스키마 버전은 추가에는 마이너(minor-for-additive), 호환성 파괴에는 메이저(major-for-breaking)를 따릅니다.

ArtifactManifest는 빌드된 하나의 아티팩트를 기록합니다. 즉, 정규 파일명, 버전, 소스 커밋, 대상 에디션, 전달 모드, 인코딩 기술, 배포 채널, 대상 PHP 버전, SHA-256 다이제스트, 선택적 인코딩 만료, 그리고 빌드 타임스탬프입니다. EncodingTechnology는 아티팩트를 인코딩하는 데 사용된 도구를 그것이 인코딩되었는지 여부와 구별합니다. 평문 아티팩트는 항상 None을 갖습니다.

DistributionChannel은 두 가지 관심사를 명시적으로 분리합니다. 즉, 아티팩트 원본(이진 저장소)과 패키지 소비 계층(composer require가 읽는 레지스트리)입니다. AccessBoundary는 누가 아티팩트에 액세스할 수 있는지를 결정합니다 — 유료 고객, 기간 제한 평가, 또는 고객에게 절대 노출되지 않는 내부 CI/QA/스테이징 — 그리고 모든 경계는 인증을 요구합니다.

PublishingPlan은 빌드 프로파일과 릴리스 매니페스트로부터 도출됩니다. 각 프로파일은 게시 대상으로 해석됩니다. 즉, 아티팩트 원본 대상과 소비 계층 대상이며, 올바른 액세스 경계가 적용되어 유료 및 평가 아티팩트가 올바른 위치로 라우팅됩니다.

핵심이 되는 결정은 릴리스를 느슨한 구성이 아니라 불변의 타입 지정 값 객체로 모델링하는 것입니다. 아티팩트 원본과 소비 계층은 별개의 enum 타입 관심사이며, 액세스 경계는 명시적입니다. 그래서 잘못 라우팅된 아티팩트 — 고객 채널에 놓인 내부 빌드 — 는 조용한 프로덕션 실수가 아니라 모델링 오류로 드러납니다. 계획은 권위적이지 않고 도출된 상태로 유지됩니다. 즉, 의도된 대상을 명명할 뿐 실제 전송은 사용자의 릴리스 도구가 수행합니다. 동일한 객체가 Core 계약을 통해 해석되므로, 에디션을 업그레이드하는 소비자는 호출 코드를 전혀 바꾸지 않습니다. 그 연속성이 바로 오픈 코어 경계의 요점입니다 — 재작성이 아니라 Enterprise 표면을 구매하는 것입니다. 설계 배경: 오픈 코어, 락인 없음.

ClassResponsibility
ReleaseManifest불변의 최상위 릴리스 문서입니다.
ArtifactManifest아티팩트별 메타데이터와 검증 필드입니다.
BuildProfile게시할 빌드 구성입니다.
DistributionChannel원본 대 소비 계층 채널 enum입니다.
AccessBoundaryPaid / Evaluation / Internal 액세스 enum입니다.
EncodingTechnology인코딩 도구 enum입니다(예: 인코딩됨 / 없음).
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 서명, 체크섬)는 매니페스트가 참조하며, 이 모듈이 아니라 사용자의 릴리스 파이프라인이 생성하고 검증합니다. 각 채널의 라우팅, 자격 증명, 저장소는 운영자의 책임입니다.

이 페이지는 릴리스 모델링 계층을 설명합니다. 공급망 증거 참조를 기록하고 라우팅하며, 서명을 직접 생성하거나, 출처를 증명하거나, 릴리스를 인증하거나, 법적 자문을 구성하지 않습니다. 매니페스트를 그 자체로 증거로 취급하는 것은 잘못입니다. 검증은 사용자의 릴리스 파이프라인이 수행합니다. 릴리스가 계약상 또는 규제상 의무를 충족하는지 판단하는 것은 사용자의 책임입니다.