Skip to content

project release: merge CHANGELOG inputs across OBS instances (--also-profile) - #146

Merged
rjd15372 merged 2 commits into
mainfrom
multi-instance-changelog
Oct 14, 2026
Merged

rjd15372 merged 2 commits into
mainfrom
multi-instance-changelog

Conversation

@rjd15372

Copy link
Copy Markdown
Collaborator

Summary

project release built its CHANGELOG from one OBS instance. With the
production slices split across build.opensuse.org and labs (UBI repos,
container images), a cut run against boo reported h3 (extras): removed
(boo's staging never had h3; its release project still holds an old copy)
and emitted no container-image diffs at all.

  • New repeatable --also-profile NAME: the package versions and container
    image package lists are fetched from every listed instance and merged.
    Each package's release version is paired with the instance that supplies
    its source version, so a stale copy on another instance cannot produce a
    spurious "update"; keys with no source on any instance (removal
    candidates) fall back to the first instance's value. Container image
    lists follow the same pairing.
  • An --also-profile whose instance cannot see the staging project fails
    loudly (the OBS helpers otherwise swallow errors and contribute nothing).
  • Safety net: a package whose directory is still in the source tree is
    never reported as removed (a warning is printed instead). This also
    changes single-instance runs: a package with no binaries on that instance
    is warned about rather than listed as removed.
  • The OBS-fetching block is extracted into _collect_release_obs_data /
    _merge_release_obs_data (pure, tested); per-instance behaviour is
    unchanged.

Usage for the current train: project release ppg:staging:18 --also-profile labsmain.

Testing

655 tests, black, pyright 0 errors. Live check follows on the 17.11-2 /
18.6-2 cuts (refresh in place after merge).

…stances

Production spans two OBS instances with disjoint slices (build.opensuse.org
holds most packages, labs the UBI repos and container images). Building the
CHANGELOG from one instance reported labs-only packages as removed and
dropped all container image diffs.

Extract the per-instance OBS fetch into _collect_release_obs_data, query
every --also-profile instance too and union the results with
_merge_release_obs_data (first wins, no cross-instance image clash). As a
safety net, a package whose directory is still in the source tree is never
reported as removed.

Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
…merge

The release version (and image list) of a key now comes from the instance
that supplied its source value, so labs' h3 source is not diffed against
boo's stale release copy; keys with no source anywhere fall back to
first-wins. --also-profile now fails when the profile's staging project is
not visible (OBS helpers swallow errors). Drop the unused source_path
parameter of _collect_release_obs_data.

Signed-off-by: Ricardo Dias <ricardo.dias@percona.com>
@rjd15372
rjd15372 merged commit 06a0580 into main Oct 14, 2026
5 checks passed
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