Introduce openEuler distro
Add openeuler-minimal element and add CI functional tests for both x86_64 and arm64. OpenEuler is an open source community driven YUM/DNF distro like Fedora. It references Fedora and CentOS a lot for the rpm packages building. So somewhat it can be treated as a redhat family distro and reuse the YUM/DNF related elements to help build openEuler images. For more info about openEuler, see: https://openeuler.org/en Depends-On: https://review.opendev.org/c/zuul/zuul-jobs/+/803413 Change-Id: I3e06e49b524364c3a4edeba8bce7a8c06b9c7b76
This commit is contained in:
parent
4f5689a409
commit
a6ee4d0c21
@ -31,6 +31,7 @@
|
|||||||
- ubuntu-minimal/focal-build-succeeds
|
- ubuntu-minimal/focal-build-succeeds
|
||||||
- containerfile/focal-build-succeeds
|
- containerfile/focal-build-succeeds
|
||||||
- fedora-container/build-succeeds
|
- fedora-container/build-succeeds
|
||||||
|
- openeuler-minimal/20.03-LTS-SP2-build-succeeds
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: dib-functests-image
|
name: dib-functests-image
|
||||||
@ -89,6 +90,7 @@
|
|||||||
- ubuntu-minimal/bionic-arm64-build-succeeds
|
- ubuntu-minimal/bionic-arm64-build-succeeds
|
||||||
- ubuntu-minimal/focal-arm64-build-succeeds
|
- ubuntu-minimal/focal-arm64-build-succeeds
|
||||||
- centos-minimal/8-aarch64-build-succeeds
|
- centos-minimal/8-aarch64-build-succeeds
|
||||||
|
- openeuler-minimal/20.03-LTS-SP2-build-succeeds
|
||||||
|
|
||||||
# Bionic / Python3 tests
|
# Bionic / Python3 tests
|
||||||
- job:
|
- job:
|
||||||
|
12
diskimage_builder/elements/openeuler-minimal/README.rst
Normal file
12
diskimage_builder/elements/openeuler-minimal/README.rst
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
=================
|
||||||
|
openeuler-minimal
|
||||||
|
=================
|
||||||
|
Create a minimal image from scratch.
|
||||||
|
|
||||||
|
Use of this element will require 'yum' and 'yum-utils' to be installed on
|
||||||
|
Ubuntu and Debian. Nothing additional is needed on Fedora, CentOS or
|
||||||
|
openEuler.
|
||||||
|
|
||||||
|
Set ``DIB_RELEASE`` to ``20.03-LTS-SP2``,``21.03`` or other release number
|
||||||
|
to explicitly select the release. ``DIB_RELEASE`` defaults the latest LTS
|
||||||
|
release.
|
@ -0,0 +1,4 @@
|
|||||||
|
cloud-init
|
||||||
|
growroot
|
||||||
|
openssh-server
|
||||||
|
yum-minimal
|
@ -0,0 +1 @@
|
|||||||
|
operating-system
|
@ -0,0 +1,3 @@
|
|||||||
|
export DISTRO_NAME=openeuler
|
||||||
|
export DIB_RELEASE=${DIB_RELEASE:-20.03-LTS-SP2}
|
||||||
|
export EFI_BOOT_DIR="EFI/openEuler"
|
@ -0,0 +1 @@
|
|||||||
|
export YUM=dnf
|
@ -0,0 +1,2 @@
|
|||||||
|
openEuler-latest-release:
|
||||||
|
vim-minimal:
|
29
diskimage_builder/elements/openeuler-minimal/root.d/00-00-generate-repo
Executable file
29
diskimage_builder/elements/openeuler-minimal/root.d/00-00-generate-repo
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
|
||||||
|
set -x
|
||||||
|
fi
|
||||||
|
set -eu
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
|
# NOTE(xinliang): This script should run before script elements/yum-minimal/root.d/08-yum-chroot
|
||||||
|
# So set the script name prefix as 00-
|
||||||
|
yum_repos_dir="$(dirname $0)/../yum.repos.d"
|
||||||
|
mkdir -p $yum_repos_dir
|
||||||
|
|
||||||
|
repo_file=$(mktemp)
|
||||||
|
cat > $repo_file << EOF
|
||||||
|
[OS]
|
||||||
|
name=openEuler-$DIB_RELEASE - OS
|
||||||
|
baseurl=http://repo.openeuler.org/openEuler-$DIB_RELEASE/OS/\$basearch/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
||||||
|
|
||||||
|
[update]
|
||||||
|
name=openEuler-$DIB_RELEASE - update
|
||||||
|
baseurl=http://repo.openeuler.org/openEuler-$DIB_RELEASE/update/\$basearch/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
mv $repo_file ${yum_repos_dir}/openEuler.repo
|
@ -0,0 +1 @@
|
|||||||
|
openEuler 20.03-LTS-SP2 test
|
@ -0,0 +1,3 @@
|
|||||||
|
block-device-efi
|
||||||
|
openstack-ci-mirrors
|
||||||
|
vm
|
@ -0,0 +1 @@
|
|||||||
|
export DIB_RELEASE='20.03-LTS-SP2'
|
@ -0,0 +1 @@
|
|||||||
|
qcow2
|
@ -58,6 +58,8 @@ if [[ -d ${DIB_OS_CI_YUM_REPOS:-/not/a/path/} ]]; then
|
|||||||
fi
|
fi
|
||||||
elif [[ "${DISTRO_NAME}" == "centos" ]]; then
|
elif [[ "${DISTRO_NAME}" == "centos" ]]; then
|
||||||
export DIB_YUM_MINIMAL_BOOTSTRAP_REPOS=${DIB_OS_CI_YUM_REPOS}/centos-minimal/${DIB_RELEASE}/yum.repos.d
|
export DIB_YUM_MINIMAL_BOOTSTRAP_REPOS=${DIB_OS_CI_YUM_REPOS}/centos-minimal/${DIB_RELEASE}/yum.repos.d
|
||||||
|
elif [[ "${DISTRO_NAME}" == "openeuler" ]]; then
|
||||||
|
export DIB_YUM_MINIMAL_BOOTSTRAP_REPOS=${DIB_OS_CI_YUM_REPOS}/openeuler-minimal/${DIB_RELEASE}/yum.repos.d
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
@ -24,7 +24,7 @@ Provides the following:
|
|||||||
The family is set automatically within pkg-map based on the
|
The family is set automatically within pkg-map based on the
|
||||||
supplied distro name. Families include:
|
supplied distro name. Families include:
|
||||||
|
|
||||||
+ redhat: includes centos, fedora, and rhel distros
|
+ redhat: includes centos, fedora, openeuler and rhel distros
|
||||||
+ debian: includes debian and ubuntu distros
|
+ debian: includes debian and ubuntu distros
|
||||||
+ suse: includes the opensuse distro
|
+ suse: includes the opensuse distro
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ log = logging.getLogger()
|
|||||||
|
|
||||||
def os_family(distro):
|
def os_family(distro):
|
||||||
family = None
|
family = None
|
||||||
if distro in ['fedora', 'rhel', 'rhel7', 'centos', 'centos7']:
|
if distro in ['fedora', 'rhel', 'rhel7', 'centos', 'centos7', 'openeuler']:
|
||||||
family = 'redhat'
|
family = 'redhat'
|
||||||
elif distro in ['debian', 'ubuntu']:
|
elif distro in ['debian', 'ubuntu']:
|
||||||
family = 'debian'
|
family = 'debian'
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
=============
|
=============
|
||||||
redhat-common
|
redhat-common
|
||||||
=============
|
=============
|
||||||
Image installation steps common to RHEL, CentOS, and Fedora.
|
Image installation steps common to RHEL, CentOS, Fedora and openEuler.
|
||||||
|
|
||||||
Requirements:
|
Requirements:
|
||||||
|
|
||||||
|
@ -4,6 +4,11 @@
|
|||||||
"libselinux-python": "python3-libselinux",
|
"libselinux-python": "python3-libselinux",
|
||||||
"policycoreutils": "python3-policycoreutils",
|
"policycoreutils": "python3-policycoreutils",
|
||||||
"policycoreutils-python": "policycoreutils-python-utils"
|
"policycoreutils-python": "policycoreutils-python-utils"
|
||||||
|
},
|
||||||
|
"openeuler": {
|
||||||
|
"libselinux-python": "python3-libselinux",
|
||||||
|
"policycoreutils": "python3-policycoreutils",
|
||||||
|
"policycoreutils-python": "policycoreutils-python-utils"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"release": {
|
"release": {
|
||||||
|
@ -1,4 +1,12 @@
|
|||||||
{
|
{
|
||||||
|
"distro": {
|
||||||
|
"openeuler": {
|
||||||
|
"linux-firmware": "",
|
||||||
|
"linux-firmware-whence": "",
|
||||||
|
"lsb_release": "openeuler-lsb",
|
||||||
|
"redhat-rpm-config": "openEuler-rpm-config"
|
||||||
|
}
|
||||||
|
},
|
||||||
"release": {
|
"release": {
|
||||||
"centos": {
|
"centos": {
|
||||||
"7": {
|
"7": {
|
||||||
|
@ -31,6 +31,8 @@ fi
|
|||||||
ARCH=${ARCH:-x86_64}
|
ARCH=${ARCH:-x86_64}
|
||||||
if [ $ARCH = amd64 ]; then
|
if [ $ARCH = amd64 ]; then
|
||||||
ARCH=x86_64
|
ARCH=x86_64
|
||||||
|
elif [[ "arm64" == "$ARCH" ]]; then
|
||||||
|
ARCH="aarch64"
|
||||||
fi
|
fi
|
||||||
# Calling elements will need to set DISTRO_NAME and DIB_RELEASE
|
# Calling elements will need to set DISTRO_NAME and DIB_RELEASE
|
||||||
# TODO Maybe deal with DIB_DISTRIBUTION_MIRROR
|
# TODO Maybe deal with DIB_DISTRIBUTION_MIRROR
|
||||||
@ -75,6 +77,8 @@ function _install_repos {
|
|||||||
packages+="basesystem filesystem setup "
|
packages+="basesystem filesystem setup "
|
||||||
if [[ ${DISTRO_NAME} = fedora && ${DIB_RELEASE} -gt 29 ]]; then
|
if [[ ${DISTRO_NAME} = fedora && ${DIB_RELEASE} -gt 29 ]]; then
|
||||||
packages+="fedora-release-cloud fedora-release-common "
|
packages+="fedora-release-cloud fedora-release-common "
|
||||||
|
elif [[ ${DISTRO_NAME} == 'openeuler' ]]; then
|
||||||
|
packages+="openEuler-release "
|
||||||
else
|
else
|
||||||
packages+="${DISTRO_NAME}-release "
|
packages+="${DISTRO_NAME}-release "
|
||||||
fi
|
fi
|
||||||
@ -99,6 +103,11 @@ function _install_repos {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# For openEuler, install other required repos and gpy-keys packages.
|
||||||
|
if [[ ${DISTRO_NAME} == 'openeuler' ]]; then
|
||||||
|
packages+="openEuler-repos openEuler-gpg-keys "
|
||||||
|
fi
|
||||||
|
|
||||||
# By default, parent elements (fedora-minimal, centos-minimal)
|
# By default, parent elements (fedora-minimal, centos-minimal)
|
||||||
# have a yum.repos.d directory in the element with a default repo;
|
# have a yum.repos.d directory in the element with a default repo;
|
||||||
# this is copied to TMP_HOOK_PATH by the usual hook-copying
|
# this is copied to TMP_HOOK_PATH by the usual hook-copying
|
||||||
@ -151,6 +160,12 @@ function _install_repos {
|
|||||||
sudo cp ${DIB_YUM_MINIMAL_EXTRA_REPOS}/* \
|
sudo cp ${DIB_YUM_MINIMAL_EXTRA_REPOS}/* \
|
||||||
$TARGET_ROOT/etc/yum.repos.d/
|
$TARGET_ROOT/etc/yum.repos.d/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# For openEuler, some repos like update are disabled by default.
|
||||||
|
# Ensure all the repo is enabled, so that we get the latest packages.
|
||||||
|
if [[ ${DISTRO_NAME} == 'openeuler' ]]; then
|
||||||
|
sudo sed -i 's/enabled=0/enabled=1/' $TARGET_ROOT/etc/yum.repos.d/*.repo
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# _install_pkg_manager packages...
|
# _install_pkg_manager packages...
|
||||||
@ -292,7 +307,7 @@ _install_repos
|
|||||||
# it seems, as it seems like as part of the Fedora modular updates
|
# it seems, as it seems like as part of the Fedora modular updates
|
||||||
# (https://docs.fedoraproject.org/en-US/modularity/) we can pick up
|
# (https://docs.fedoraproject.org/en-US/modularity/) we can pick up
|
||||||
# seemingly mismatched libraries.
|
# seemingly mismatched libraries.
|
||||||
if [[ ${DISTRO_NAME} == 'fedora' ]]; then
|
if [[ ${DISTRO_NAME} =~ (fedora|openeuler) ]]; then
|
||||||
_install_pkg_manager dnf dnf-plugins-core curl
|
_install_pkg_manager dnf dnf-plugins-core curl
|
||||||
elif [[ ${DISTRO_NAME} == centos && $DIB_RELEASE > "7" ]]; then
|
elif [[ ${DISTRO_NAME} == centos && $DIB_RELEASE > "7" ]]; then
|
||||||
_install_pkg_manager dnf dnf-plugins-core curl libcurl
|
_install_pkg_manager dnf dnf-plugins-core curl libcurl
|
||||||
|
@ -19,4 +19,5 @@ Distributions which are supported as a target for an image:
|
|||||||
- RHEL 6, 7
|
- RHEL 6, 7
|
||||||
- 16.04 ("xenial"), 18.04 ("bionic")
|
- 16.04 ("xenial"), 18.04 ("bionic")
|
||||||
- Gentoo
|
- Gentoo
|
||||||
|
- openEuler 20.03-LTS-SP1+
|
||||||
- openSUSE Leap 42.3, 15.0, 15.1 and Tumbleweed (opensuse-minimal only)
|
- openSUSE Leap 42.3, 15.0, 15.1 and Tumbleweed (opensuse-minimal only)
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Add ``openeuler-minimal`` element. OpenEuler is an open source community driven
|
||||||
|
YUM/DNF distro like Fedora.
|
||||||
|
For more info about openEuler, see: https://openeuler.org/en.
|
@ -58,3 +58,18 @@
|
|||||||
with_nested:
|
with_nested:
|
||||||
- [ 'default' ]
|
- [ 'default' ]
|
||||||
- [ 'fedora.repo', 'fedora-updates.repo' ]
|
- [ 'fedora.repo', 'fedora-updates.repo' ]
|
||||||
|
|
||||||
|
- name: Create openeuler-minimal 20.03-LTS-SP2 directory
|
||||||
|
file:
|
||||||
|
path: "{{ dib_gate_mirror_repos }}/openeuler-minimal/20.03-LTS-SP2/yum.repos.d"
|
||||||
|
state: directory
|
||||||
|
mode: 0775
|
||||||
|
recurse: yes
|
||||||
|
|
||||||
|
- name: Install openeuler-minimal 20.03-LTS-SP2 repo files
|
||||||
|
template:
|
||||||
|
dest: "{{ dib_gate_mirror_repos }}/openeuler-minimal/20.03-LTS-SP2/yum.repos.d/dib-mirror-{{ item }}"
|
||||||
|
mode: 0644
|
||||||
|
src: "openeuler-minimal/20.03-LTS-SP2/{{ item }}.j2"
|
||||||
|
with_items:
|
||||||
|
- openEuler.repo
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
[OS]
|
||||||
|
name=OS
|
||||||
|
baseurl=http://{{ mirror_fqdn }}/openeuler/openEuler-20.03-LTS-SP2/OS/$basearch/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
||||||
|
|
||||||
|
[everything]
|
||||||
|
name=everything
|
||||||
|
baseurl=http://{{ mirror_fqdn }}/openeuler/openEuler-20.03-LTS-SP2/everything/$basearch/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
||||||
|
|
||||||
|
[EPOL]
|
||||||
|
name=EPOL
|
||||||
|
baseurl=http://{{ mirror_fqdn }}/openeuler/openEuler-20.03-LTS-SP2/EPOL/main/$basearch/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
||||||
|
|
||||||
|
[EPOL-UPDATE]
|
||||||
|
name=EPOL-UPDATE
|
||||||
|
baseurl=http://{{ mirror_fqdn }}/openeuler/openEuler-20.03-LTS-SP2/EPOL/update/main/$basearch/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
||||||
|
|
||||||
|
[update]
|
||||||
|
name=update
|
||||||
|
baseurl=http://{{ mirror_fqdn }}/openeuler/openEuler-20.03-LTS-SP2/update/$basearch/
|
||||||
|
enabled=1
|
||||||
|
gpgcheck=0
|
Loading…
Reference in New Issue
Block a user