Chuyển tới nội dung chính

Release pipeline

A release (for example 3.0.0-pre.18) is one Shared candidate plus one Product candidate, built reproducibly, retained by BuildOps, approved by the owner and delivered to GameStudio3/SDK-Packages. The BuildOps runbooks are the authority for every step: sdk-candidate, approval, sdk-delivery, sdk-adoption.

Stages​

#StageWhereOutput
1Shared candidatebuild-shared-sdk.yml (BuildOps, runner 22) with sdk-release, crosssdk-revision, plan-idShared candidate sha256:… and its handoff
2Take Shared into ProjectV-SDKci/update-shared-runtime.py on a branch from v3; restamp the Product packages to the release; PR into v3ProjectV-SDK source revision
3Product candidateverification/Invoke-LocalProjectVCandidate.ps1 Run1, Run2 and Compare, then Invoke-ProjectVCandidateAcceptance.ps1 -Gate ProfilesProduct candidate sha256:… and handoff
4CatalogBuildOps sdk_release_cli import into sdk/releases.json and sdk/plan-preparations.json; runner local configuration; read-only preflightRelease tuple and plan ID
5Retainbuild-sdk.yml stage=candidate, then stage=retainRetained, verified artifacts
6ApproveOwner review receipt on the approval issue; delivery-authority recordApproved scope
7Deliverpublish-sdk.yml operation=plan, then operation=candidate-deliveryPackage PR, then index PR on SDK-Packages
8VerifyMerge both SDK-Packages PRs; rerun candidate-delivery until it reports VERIFIED_COMPLETESelectable delivery: package revision + index
9AdoptClient pins the 14 URLs, profile and CROSSSDK_DELIVERY_PIN.json; full local flow; PRClient on the release

Run1 and Run2 must be byte-identical; the comparison and four profile acceptances are part of the handoff. Nothing is dispatched, published or pushed without the owner's go-ahead.

Delivery layout​

SDK-Packages/
packages/shared/<package-id>/<version>/... 9 Shared packages
packages/products/projectv/<package-id>/<version>/... 5 ProjectV packages
deliveries/candidate/<plan-id>/index.json delivery index

The Client pins every package at the package revision (the package PR's merge commit). CROSSSDK_DELIVERY_PIN.json records the plan, candidate, package revision, index revision, index path and hashes, so the delivery can be re-verified later.

Package contents​

Each package contains package.json, README.md, CHANGELOG.md, LICENSE.md, Unity .meta files, the managed assemblies it owns (per platform under Runtime/Plugins and Editor/Plugins) and required native bridges. No C# source, no PDBs, no machine paths. Assemblies are explicitly referenced except the high-level SilverTiger.ProjectV.Unity and .Unity.VContainer.

Third-party inputs​

com.silvertiger.crosssdk.core depends on org.nuget.system.text.json (OpenUPM); the VContainer integration depends on jp.hadashikick.vcontainer 1.17.0. Consumers declare the OpenUPM scoped registry and VContainer themselves.