From 3c6d36839783fa4a0b21c8f372624b8fe792b1a9 Mon Sep 17 00:00:00 2001 From: Kay Yan Date: Tue, 17 Mar 2026 15:59:37 +0800 Subject: [PATCH] ci(openeuler): improve mirror selection and stabilize CI checks (#13094) Enable openEuler metalink and clear dnf cache after repo updates so package downloads use refreshed mirror metadata. Keep openeuler24-calico in the main CI matrix with a longer package timeout, and clean up failed pods before running-state checks to reduce transient CI noise. Made-with: Cursor Made-with: Cursor Made-with: Cursor Made-with: Cursor Signed-off-by: Kay Yan --- .gitlab-ci/kubevirt.yml | 2 +- roles/bootstrap_os/defaults/main.yml | 4 +++ roles/bootstrap_os/tasks/openEuler.yml | 44 ++++++++++++++++++++++++-- tests/files/openeuler24-calico.yml | 7 ++-- 4 files changed, 52 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci/kubevirt.yml b/.gitlab-ci/kubevirt.yml index dd3e3dec7..22cd8e5cc 100644 --- a/.gitlab-ci/kubevirt.yml +++ b/.gitlab-ci/kubevirt.yml @@ -57,6 +57,7 @@ pr: - ubuntu24-kube-router-svc-proxy - ubuntu24-ha-separate-etcd - fedora40-flannel-crio-collection-scale + - openeuler24-calico # This is for flakey test so they don't disrupt the PR worklflow too much. # Jobs here MUST have a open issue so we don't lose sight of them @@ -67,7 +68,6 @@ pr-flakey: matrix: - TESTCASE: - flatcar4081-calico # https://github.com/kubernetes-sigs/kubespray/issues/12309 - - openeuler24-calico # https://github.com/kubernetes-sigs/kubespray/issues/12877 # The ubuntu24-calico-all-in-one jobs are meant as early stages to prevent running the full CI if something is horribly broken ubuntu24-calico-all-in-one: diff --git a/roles/bootstrap_os/defaults/main.yml b/roles/bootstrap_os/defaults/main.yml index 29e2dcb77..63ffe4b96 100644 --- a/roles/bootstrap_os/defaults/main.yml +++ b/roles/bootstrap_os/defaults/main.yml @@ -12,6 +12,10 @@ coreos_locksmithd_disable: false # Install epel repo on Centos/RHEL epel_enabled: false +## openEuler specific variables +# Enable metalink for openEuler repos (auto-selects fastest mirror by location) +openeuler_metalink_enabled: false + ## Oracle Linux specific variables # Install public repo on Oracle Linux use_oracle_public_repo: true diff --git a/roles/bootstrap_os/tasks/openEuler.yml b/roles/bootstrap_os/tasks/openEuler.yml index 42551339a..914a2b5bc 100644 --- a/roles/bootstrap_os/tasks/openEuler.yml +++ b/roles/bootstrap_os/tasks/openEuler.yml @@ -1,3 +1,43 @@ --- -- name: Import Centos boostrap for openEuler - import_tasks: centos.yml +- name: Import CentOS bootstrap for openEuler + ansible.builtin.import_tasks: centos.yml + +- name: Get existing openEuler repo sections + ansible.builtin.shell: + cmd: "set -o pipefail && grep '^\\[' /etc/yum.repos.d/openEuler.repo | tr -d '[]'" + executable: /bin/bash + register: _openeuler_repo_sections + changed_when: false + failed_when: false + check_mode: false + become: true + when: openeuler_metalink_enabled + +- name: Enable metalink for openEuler repos + community.general.ini_file: + path: /etc/yum.repos.d/openEuler.repo + section: "{{ item.key }}" + option: metalink + value: "{{ item.value }}" + no_extra_spaces: true + mode: "0644" + loop: "{{ _openeuler_metalink_repos | dict2items | selectattr('key', 'in', _openeuler_repo_sections.stdout_lines | default([])) }}" + become: true + when: openeuler_metalink_enabled + register: _openeuler_metalink_result + vars: + _openeuler_metalink_repos: + OS: "https://mirrors.openeuler.org/metalink?repo=$releasever/OS&arch=$basearch" + everything: "https://mirrors.openeuler.org/metalink?repo=$releasever/everything&arch=$basearch" + EPOL: "https://mirrors.openeuler.org/metalink?repo=$releasever/EPOL/main&arch=$basearch" + debuginfo: "https://mirrors.openeuler.org/metalink?repo=$releasever/debuginfo&arch=$basearch" + source: "https://mirrors.openeuler.org/metalink?repo=$releasever&arch=source" + update: "https://mirrors.openeuler.org/metalink?repo=$releasever/update&arch=$basearch" + update-source: "https://mirrors.openeuler.org/metalink?repo=$releasever/update&arch=source" + +- name: Clean dnf cache to apply metalink mirror selection + ansible.builtin.command: dnf clean all + become: true + when: + - openeuler_metalink_enabled + - _openeuler_metalink_result.changed diff --git a/tests/files/openeuler24-calico.yml b/tests/files/openeuler24-calico.yml index 16699e887..69465b33c 100644 --- a/tests/files/openeuler24-calico.yml +++ b/tests/files/openeuler24-calico.yml @@ -3,8 +3,11 @@ cloud_image: openeuler-2403 vm_memory: 3072 -# Openeuler package mgmt is slow for some reason -pkg_install_timeout: "{{ 10 * 60 }}" +# Use metalink for faster package downloads (auto-selects closest mirror) +openeuler_metalink_enabled: true + +# CI package installation takes ~7min; default 5min is too tight, use 15min for margin +pkg_install_timeout: "{{ 15 * 60 }}" # Work around so the Kubernetes 1.35 tests can pass. We will discuss the openeuler support later. kubeadm_ignore_preflight_errors: