Repository navigation
Conversation
UnionTech OS (统信 UOS) Server 20 is an RPM/dnf, systemd distribution. Its /etc/os-release declares ID=uos and carries no ID_LIKE, so template builds on a UOS base currently fall through to the "unsupported base image distribution" error with no best-effort fallback. Add a uos profile to the distro registry, RHEL-shaped (dnf -> microdnf -> yum install fallback, systemd at /usr/lib/systemd/systemd, wheel admin group, update-ca-trust bundle refresh). The one wrinkle, found by testing two independent UOS Server 20 images, is that the lineages name the account-tools package differently: one ships shadow, the other shadow-utils, and listing either aborts the dnf transaction on the image that lacks it. Both base images already ship useradd/usermod, so the profile installs neither and relies on the base (as the Debian family does); passwd is still installed and resolves on both. parity_test.go maps uos shadow-tools to passwd only; TestUOSProfile pins that neither shadow package is listed; README lists UOS. Verified against macrosan/uos:v20-1050 and ixuzhi/uos-server:1070a (amd64): - /etc/os-release: ID="uos", VERSION_ID="20", no ID_LIKE - macrosan ships shadow (not shadow-utils); ixuzhi ships shadow-utils (not shadow); dnf install of the absent name aborts the whole transaction - both ship useradd in the base image - the profile package set (no shadow*, keeps passwd) resolves cleanly on both (Install 49 / 107 Packages respectively; no unresolved packages) - dnf and yum present; systemd, wheel group, update-ca-trust all present - go test ./.../base/distro/ passes (parity trio + generic RPM-fallback and selector coverage, plus TestUOSProfile)
AdaAibaby
requested review from
ValentaTomas,
dobrac and
jakubno
as code owners
November 13, 2026 15:15
This branch has not been deployed
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.
What
Add a UnionTech OS (UOS) Server 20 profile to the template-build distro registry, so builds on a UOS base image are officially supported instead of failing as an unsupported distribution.
Same pattern as TencentOS/OpenCloudOS (#3747 / e78f6cf): declarative
Profilekeyed on/etc/os-releaseID, aparity_test.goentry per family, a profile assertion test, and a README entry.Why
UnionTech OS (统信 UOS) Server 20 is an RPM/dnf, systemd distribution widely deployed across domestic infrastructure. Its
/etc/os-releasedeclaresID=uoswith noID_LIKE, so today a UOS base has no matching profile and no ID_LIKE fallback — provisioning exits withunsupported base image distribution.The wrinkle (found by testing two images)
The two UOS Server 20 lineages name the account-tools package differently: one ships
shadow, the othershadow-utils, anddnf install-ing the name that is absent aborts the whole transaction. Both base images already shipuseradd/usermod, so the profile installs neither and relies on the base image (exactly as the Debian family does for shadow tools);passwdis still installed and resolves on both.Tested (macrosan/uos:v20-1050 and ixuzhi/uos-server:1070a, amd64)
go test ./packages/orchestrator/pkg/template/build/phases/base/distro/ -v— all pass, includingTestUOSProfile, the genericTestRPMProfilesFallBackFromDnf/TestSelectorCoversIDsAndRejects, and the parity trio.Scope
Four files:
distro/distro.go,distro/parity_test.go,distro/distro_test.go,orchestrator/README.md. No behavior change for any existing distro./cc @ryan-sana Looking forward to your code review.