Skip to content

[Devops] Branching Strategy - Phase 3 #509

Description

@lowlydba

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.

vnext dev builds to CodeArtifact are out of scope here, split to Phase 4 (#510): they're blocked on a CodeArtifact repo that doesn't exist yet (ops-team#299), so this phase can ship and close without waiting on that migration.

Trigger x destination matrix

Trigger Workflow Packages Version Destination
Push to main, no bump main-publish.yaml affected only <version>.postN+main.<sha> CodeArtifact
GitHub Release published (manual bump) release-publish.yaml released package <version> Public PyPI (upstreamed by all internal CA)
Push to vnext see Phase 4 (#510) affected only <version>.postN+vnext.<sha> ⛔ Blocked on ops-team#299

CodeArtifact: domain overture-pypi / account 505071440022 / region us-west-2.

Tasks

Internal builds -> CodeArtifact

Releases -> PyPI

Docs

Require the new CI checks

Consumer guidance

Internal consumers (CDP) pin >=X.Y.Z per package: this resolves the freshest .postN build from CodeArtifact and falls back to the clean release. Never pin >, PEP 440 excludes post-releases from exclusive comparisons. Verified against uv in Phase 2.B.

Definition of done

Original issue body (superseded, kept for history)

Original matrix used +dev.N (vnext) and CI-computed <next-patch> (main), with public PyPI on major/minor bumps only:

Trigger Version Destination
Push to vnext <last-published>+dev.N CA dev repo
Push to main (no major/minor bump) <major>.<minor>.<next-patch> TBD
Major/minor bump on main <major>.<minor>.0 Public PyPI

The patch-destination decision (Option A: patches to PyPI; Option B: CA only) was superseded by making patch a human-owned bump like any other: deliberate patch bumps release to PyPI, and no-bump merges publish internal-only .postN builds. +dev.N was dropped because local-only labels are not PEP 440 orderable, so >= consumers could never resolve them.

CDP pin guidance was >=<last-published>+dev.0; now plain >=X.Y.Z.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions