Skip to content

ci(release): publish each release batch in dependency order - #93

Merged
aikins01 merged 1 commit into
mainfrom
fix/release-wait-for-core
Oct 27, 2026
Merged

aikins01 merged 1 commit into
mainfrom
fix/release-wait-for-core

Conversation

@aikins01

Copy link
Copy Markdown
Contributor

Release #78 created 22 component releases, and 13 of their publish runs failed. Each release started its own run, and an integration's publish job gave its core package (@telemetry-dev/otel, @telemetry-dev/sdk, or telemetry-dev on PyPI) about two minutes to appear on the registry. Core publication was still in progress when those waits ran out; the core Python publish job alone waited almost three minutes for a runner. All 13 succeeded on retry.

The run for the release PR's merge commit now publishes every package that merge released, in release-please-config.json order, in one job per registry. Core packages go out before the integrations that depend on them, and no job holds a runner while it waits for another job to start. The release: published trigger is removed, and per-tag release_tag retries from main work as before. Dependency waits are now about 10 minutes for npm and PyPI, and the Python dependency check runs just before each upload instead of in the build job.

This reverses the old rule in RELEASING.md that each release publishes only its own package. The cost is that one failing package stops the packages after it in the same registry job. Re-running the merge commit's run recovers, since it skips versions already published, and RELEASING.md now describes which re-run to use.

Discovery selects a package when release-please reports it or when its computed tag points at the pushed commit. The second rule covers a re-run after release-please failed partway through creating releases: on the re-run it skips releases that already exist, so paths_released alone would leave them unpublished. The release-please job has its own concurrency group with queue: max, because the default queue cancels a waiting job when another push arrives, and that job now decides what the merge publishes. actionlint 1.7.12 does not know queue yet, so .github/actionlint.yaml ignores that one error in this workflow.

The release tests now also check that the config lists each package after its dependencies, since a wrong order would stall the whole batch.

Each component release used to start its own run, and an integration's
publish job waited about two minutes for its core package. When release
#78 created 22 releases at once, core publication was still waiting for
runners when those waits ran out, and 13 publish runs failed.

The run for the release PR's merge commit now publishes every released
package in release-please-config.json order, in one job per registry,
so core packages go out first and no job holds a runner while it waits.
Per-tag retries from main still work.
@aikins01 aikins01 self-assigned this Oct 27, 2026
@aikins01
aikins01 merged commit f315f39 into main Oct 27, 2026
10 checks passed
@aikins01
aikins01 deleted the fix/release-wait-for-core branch October 27, 2026 21:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant