Skip to content

feat(orchestrator): support Kylin Advanced Server V10 template builds - #3828

Open
AdaAibaby wants to merge 1 commit into
e2b-dev:mainfrom
AdaAibaby:feat/kylin-distro-support
Open

AdaAibaby wants to merge 1 commit into
e2b-dev:mainfrom
AdaAibaby:feat/kylin-distro-support

Conversation

@AdaAibaby

@AdaAibaby AdaAibaby commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

What

Add a Kylin Linux Advanced Server V10 profile to the template-build distro registry, so builds on a Kylin base image are officially supported instead of failing as an unsupported distribution.

Same pattern as the TencentOS/OpenCloudOS support (#3747 / e78f6cf): a declarative Profile keyed on /etc/os-release ID, a parity_test.go capability entry per family, a profile assertion test, and a README entry.

Why

Kylin Advanced Server (银河麒麟高级服务器) V10 is an RPM/dnf, systemd distribution widely deployed across domestic infrastructure. Its /etc/os-release declares ID=kylin with no ID_LIKE, so today a Kylin base has no matching profile and no ID_LIKE fallback — provisioning exits with unsupported base image distribution.

How

RHEL/TencentOS-shaped profile (dnf → microdnf → yum install fallback, systemd at /usr/lib/systemd/systemd, wheel admin group, update-ca-trust bundle refresh) with the one verified difference it shares with openEuler: Kylin ships shadow, not shadow-utils. parity_test.go gains a kylin entry for every capability; TestKylinProfile pins the id and the shadow swap; README lists Kylin.

Tested (macrosan/kylin:v10-sp3-2403, amd64)

/etc/os-release: ID="kylin", VERSION_ID="V10", PRETTY="Kylin Linux Advanced Server V10 (Halberd)", no ID_LIKE
dnf -y install --allowerasing --assumeno <full profile package set>
  -> Transaction Summary: Install 160 Packages, 45 M   (all resolve, no errors)
all 21 profile packages resolve individually
shadow-utils -> ABSENT ;  shadow -> EXISTS
dnf and yum present; systemd at /usr/lib/systemd/systemd; wheel group; update-ca-trust + ca-bundle link present

go test ./packages/orchestrator/pkg/template/build/phases/base/distro/ -v — all pass, including TestKylinProfile, the generic TestRPMProfilesFallBackFromDnf / 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.

Kylin Linux Advanced Server (银河麒麟高级服务器) V10 is an RPM/dnf, systemd
distribution widely used across domestic infrastructure. Its /etc/os-release
declares ID=kylin and carries no ID_LIKE, so template builds on a Kylin base
currently fall through to the "unsupported base image distribution" error with
no best-effort fallback.

Add a kylin profile to the distro registry, RHEL/TencentOS-shaped
(dnf -> microdnf -> yum install fallback, systemd at /usr/lib/systemd/systemd,
wheel admin group, update-ca-trust bundle refresh) with the one verified
package-name difference it shares with openEuler: Kylin ships shadow, not
shadow-utils. parity_test.go gains a kylin entry for every capability;
TestKylinProfile pins the id and the shadow swap; README lists Kylin.

Verified against macrosan/kylin:v10-sp3-2403 (amd64):
- /etc/os-release: ID="kylin", VERSION_ID="V10", no ID_LIKE
- dnf transaction for the full profile package set resolves cleanly
  (Install 160 Packages, 45 M; no unresolved packages)
- shadow-utils is absent from the repos; shadow exists (hence the swap)
- dnf and yum both present; systemd, wheel group, update-ca-trust all present
- go test ./.../base/distro/ passes (parity trio + generic RPM-fallback and
  selector coverage, plus TestKylinProfile)

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants