Repository navigation
qa / project versions: read package versions from OBS builds - #177
Merged
Merged
Conversation
EXPECTED_VERSIONS and project versions --online read package versions from the binaries OBS built (one binarylist request per project) instead of parsing obs/_service locally, with an agreement check across the instance's repositories. qa run computes them for every lane; project release stops baking them into the release mirrors. Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
One binarylist request per project gives every package's versrel per repository; source artifacts (.src.rpm, .dsc) are preferred and _version_from_binary now reads them. Helpers normalise to the upstream version, check that repositories agree, or pick the first repository. Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
qa run now reads versions from the pre-release on OBS, so the cut no longer writes them into the release mirror qa: entries. Copied package lanes carry package: <name> so qa run still gives them only their own package's line. Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
qa run reads each package's version from the OBS project under test (one binarylist per project) instead of parsing obs/_service. The upstream version must agree across the instance's repositories, else the run fails before any trigger; packages without binaries are named in one warning. PR lanes read packages absent from the PR project from the fallback root; release mirrors use their staging source's structure and read versions from the pre-release. qa show computes them only with --expected-versions, so the CI matrix step stays off OBS. Mirror package lanes are scoped by a package: key. Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
A package present without binaries in a higher-priority project no longer takes its version from a lower provider, and a project whose own packages all lack binaries no longer follows its subproject paths. Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
One binarylist request per OBS project replaces build results plus per-package, per-repository binary listings. Rows keep printing a full versrel, now from the first repository in sorted order, and warn when repositories disagree on the upstream version. Image rows are unchanged. Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
Note why multibuild flavors are not looked up. Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
…ing project under test EXPECTED_VERSIONS is now applied after lane selection; a version conflict aborts only when a selected lane would send the conflicting package, other conflicts are warnings. A missing OBS project under test is an error. Also: lazy image repo/arch lookup in project versions --online, test and import cleanups, docs. Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
mohitj1988
approved these changes
Oct 20, 2026
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
EXPECTED_VERSIONS(sent to the Jenkins QA jobs so they check the versions we actually ship) was derived by parsing each package'sobs/_servicelocally, with one heuristic per service type. When a package's version could not be derived it was silently dropped, and the test suites fell back to their own tables. Release PR #148 hit this with pgBackRest 2.60.0 (download_url): every container, server and tarball lane failed against correct binaries. 8f803fe patched that service type; this PR removes the class of bug.OBS already knows the answer: every built binary carries its version in its file name.
Spec:
docs/superpowers/specs/2026-10-20-obs-built-versions-design.md· Plan:docs/superpowers/plans/2026-10-20-obs-built-versions.mdWhat
percona_obs/obs_versions.py(new): oneGET /build/<prj>/_result?view=binarylistper OBS project (cached per run) gives every package's versrel per repository; source artifacts (.src.rpm,.dsc) are preferred;_version_from_binarynow reads them. Aggregates are covered: OBS lists aggregated binaries under the aggregating package. A 404 means "project absent"; any other error stops the command naming the project.qa runcomputesEXPECTED_VERSIONSfrom the OBS project under test for every lane (PR, staging, nightly, pre-release):image-fallback-rootprj); a present package whose build failed never falls back;release.yamland read versions from the pre-release (productionppg:releases:*is never read);qa showcomputesEXPECTED_VERSIONSonly with--expected-versions, so CI matrix detection (list_qa_matrix.py) makes no OBS request.project releasestops bakingEXPECTED_VERSIONSinto release mirrors; copied package lanes carrypackage: <pkg>, a new validated qa-entry key that restricts the entry to that package's line.project versions --online: package rows use the same batch request (one per project instead of per package × repository), keep printing the full versrel (now from the first repository in sorted order) and warn when repositories disagree. Image rows unchanged.docs/PERCONA_OBS_TOOL.md,.github/copilot-instructions.md, the two-hop release spec.Verification
pytest: 737 passed;pyright: 0 errors;black --check percona_obs/ tests/: clean.qa show --expected-versions --jsonon build.opensuse.org (-P isv) and labs (-P labsmain) forppg:staging:{17,18,19}and their:containers: all exit 0, no conflicts,percona-pgbackrest=2.60.0everywhere,percona-postgresql=19.0.1~rc1on staging:19. Compared with the old local parser the lane sets are identical and the values only gain packages the parser could not see (GIS libraries, llvm-21, ppg-server, build dependencies; labs container lanes grow from 50 to 89 lines).Follow-up after merge
Refresh release PR #148 (
project releasefor 17 and 18): its mirrors lose the baked values and the release lanes compute from the pre-release projects.