fix: support pre-release tags in release pipeline and keep PR benchmarks under 10 minutes - #697
Merged
Merged
Conversation
…anches - update-required-packages.php writes branch alias as MAJOR.MINOR.x-dev so path repositories keep resolving local monorepo packages when mutual dependencies point to a pre-release version (e.g. ~2.0.0-beta.1) - release.yml forwards the tag's source branch to the monorepo split action so stable releases from main and pre-releases from other branches do not overwrite each other's branch in the read-only repositories - bump split action to v2.4.5 which is able to create missing branches in the read-only repositories (v2.4.0 exits before reaching branch creation)
The workflow grew from ~5 to ~50-70 minutes after adding the high throughput publishing and outbox relay benchmarks. Three compounding causes: - retry-threshold=5 rejects any iteration deviating 5% from the variant mean and re-runs it in an unbounded loop; broker-bound subjects have 15-30% natural variance, so nearly every variant retried many times - outbox relay filled and drained 10 000 messages per iteration, with the message-by-message subject alone costing ~100s per iteration - the whole suite runs twice per PR (main baseline + PR) Changes: - iterations reduced to 2 for both new benchmark classes; publishing scenarios keep 1000 messages per iteration, outbox relay works on 1000 messages (forwarding batch size is 100, so the batched vs single-batch vs message-by-message contrast is preserved) - retry threshold removed from both phpbench invocations - baseline results for a given main commit are cached and reused across PR runs, so the typical run benchmarks only the PR side Measured suite time: ~3 minutes per pass (was ~25-35 minutes)
GitHub writes a lowercase x when the checkbox is ticked through the UI, so UI-checked agreements failed the uppercase-only check
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why is this change proposed?
Ecotone 2.0 will be tested through beta tags (e.g.
2.0.0-beta.1) released from a dedicated branch, and the release pipeline assumes every release is a stable tag cut frommain:<tag>-dev) sorts below a pre-release constraint like~2.0.0-beta.1, so split testing and per-packagecomposer installwould stop resolving the local monorepo packages and fail (verified withcomposer update --dry-run).mainbranch, so a beta from a 2.0 branch and the next stable 1.x release would overwrite each other's content there.Separately, the PR benchmark workflow grew from ~5 to ~50-70 minutes after the high throughput publishing and outbox relay benchmarks were added, making every PR wait on it.
Description of Changes
Release pipeline (pre-release support):
bin/update-required-packages.phpwrites the branch alias asMAJOR.MINOR.x-dev(e.g.2.0.x-dev), which satisfies both stable (~1.326.0) and pre-release (~2.0.0-beta.1) mutual constraints — verified for both flows end-to-endrelease.ymlforwards the tag's source branch to the split action, so stable releases keep landing on the read-only repos'mainwhile pre-releases land on a matching branchPR benchmarks (~50-70 min → under 10):
--retry-threshold=5: it re-runs any iteration deviating ≥5% from the variant mean in an unbounded loop, and broker-bound subjects have 15-30% natural varianceIterations(2)for the two new benchmark classes; publishing scenarios keep 1000 messages per iteration, outbox relay works on 1000 messages (forwarding batch size is 100, so the message-by-message vs batched vs single-batch contrast is preserved: measured 4.8s vs 0.2s)maincommit are cached and reused across PR runs, so the typical run benchmarks only the PR sideDbConnectBenchmarkrespectsDATABASE_DSN(previously hardcoded localhost and failed in containerized environments)xGitHub writes when the checkbox is ticked through the UIMeasured full suite: ~3 minutes per pass, was ~25-35. Note: the first run after this merges still benchmarks the old heavy suite as baseline once (~30 min), then the cache takes over.
Pull Request Contribution Terms