You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Build and publish packages to the right destinations using version strings computed by Phase 2. Each workflow has one trigger and one destination. No version logic lives here.
Trigger × destination matrix
Trigger
Workflow
Packages
Version
Destination
Push to vnext
p3-dev-builds-ca
affected pkgs only
<last-published>+dev.N
CA dev repo
Push to main (no <major>/<minor> bump)
p3-main-publish
affected pkgs only
<major>.<minor>.<next-patch>
⚠️ TBD — see below
<major>/<minor> bump on main
p3-release-publish
affected pkgs only
<major>.<minor>.0
Public PyPI
CodeArtifact: domain overture-pypi / account 505071440022 / region us-west-2.
Warning
Decision required before Phase 3 can start: Where do patch releases go?
Option A — Patches → Public PyPI: every main merge is a public release. Consumers always get latest. PyPI gets noisy; every merged PR is a public event.
Option B — Patches → CA only, PyPI on major/minor bumps only: cleaner public release signal. Internal (CDP) and external (PyPI) consumers diverge — external consumers only see curated major/minor releases.
This decision also affects whether p2-release-trigger (Phase 2.B) is needed as a PyPI gate, or whether a direct main push trigger is sufficient.
Tasks
p3-dev-builds-ca
Trigger: push to vnext
Detect affected packages (changed since last dev build).
Use compute-version action to get <last-published>+dev.<run_number> per affected pkg.
Build + publish to CA dev repo.
CDP consumers pin >=<last-published>+dev.0 per package to track latest.
p3-main-publish
Trigger: push to main with no <major>/<minor> changes.
Detect affected packages.
Use compute-version action to get <major>.<minor>.<next-patch> per affected pkg.
Build + publish to TBD destination (CA or PyPI — see decision above).
p3-release-publish
Trigger: <major>/<minor> bump on main (any package).
Build affected packages at <major>.<minor>.0.
Publish to public PyPI via Trusted Publishing (OIDC, no long-lived tokens) + PyPI attestations.
Goal
Build and publish packages to the right destinations using version strings computed by Phase 2. Each workflow has one trigger and one destination. No version logic lives here.
Trigger × destination matrix
vnextp3-dev-builds-ca<last-published>+dev.Nmain(no<major>/<minor>bump)p3-main-publish<major>.<minor>.<next-patch><major>/<minor>bump onmainp3-release-publish<major>.<minor>.0CodeArtifact: domain
overture-pypi/ account505071440022/ regionus-west-2.Warning
Decision required before Phase 3 can start: Where do patch releases go?
mainmerge is a public release. Consumers always get latest. PyPI gets noisy; every merged PR is a public event.This decision also affects whether
p2-release-trigger(Phase 2.B) is needed as a PyPI gate, or whether a directmainpush trigger is sufficient.Tasks
p3-dev-builds-cavnextcompute-versionaction to get<last-published>+dev.<run_number>per affected pkg.>=<last-published>+dev.0per package to track latest.p3-main-publishmainwith no<major>/<minor>changes.compute-versionaction to get<major>.<minor>.<next-patch>per affected pkg.p3-release-publish<major>/<minor>bump onmain(any package).<major>.<minor>.0.overturemaps-pypublish workflow.p3-docsUpdate
docs/versioning.mdwith:>=<last-published>+dev.0)Contributor-facing changes
vnext→ affected packages auto-publish to CA dev repo as<version>+dev.N.main(no version bump) → affected packages publish as<major>.<minor>.<next-patch>to TBD destination.<major>/<minor>onmain→ public PyPI publish fires automatically.>=<last-published>+dev.0to track vnext dev builds.Definition of done
p3-dev-builds-caworkflow livep3-main-publishworkflow livep3-release-publishworkflow live, tested against a real releasedocs/versioning.mdupdated