Fix gating test
Resolves: #RHEL-125142 Update tmt plan to work with upstream changes Signed-off-by: Xiaofeng Wang <xiaofwan@redhat.com>
This commit is contained in:
parent
316a7d4dc8
commit
92af54a9e2
@ -1,65 +0,0 @@
|
||||
diff --git i/tmt/tests/bootc-install-provision.sh w/tmt/tests/bootc-install-provision.sh
|
||||
index c4c884b..29df30c 100755
|
||||
--- i/tmt/tests/bootc-install-provision.sh
|
||||
+++ w/tmt/tests/bootc-install-provision.sh
|
||||
@@ -4,6 +4,8 @@ set -exuo pipefail
|
||||
BOOTC_TEMPDIR=$(mktemp -d)
|
||||
trap 'rm -rf -- "$BOOTC_TEMPDIR"' EXIT
|
||||
|
||||
+ARCH=$(uname -m)
|
||||
+
|
||||
# LBI only enabled for test-22-logically-bound-install
|
||||
LBI="${LBI:-disabled}"
|
||||
|
||||
@@ -16,6 +18,28 @@ case "$ID" in
|
||||
"fedora")
|
||||
TIER1_IMAGE_URL="${TIER1_IMAGE_URL:-quay.io/fedora/fedora-bootc:${VERSION_ID}}"
|
||||
;;
|
||||
+ "rhel")
|
||||
+ TIER1_IMAGE_URL="${TIER1_IMAGE_URL:-images.paas.redhat.com/bootc/rhel-bootc:latest-${VERSION_ID}}"
|
||||
+
|
||||
+ CURRENT_COMPOSE_ID=$(skopeo inspect --no-tags --retry-times=5 --tls-verify=false "docker://${TIER1_IMAGE_URL}" | jq -r '.Labels."redhat.compose-id"')
|
||||
+
|
||||
+ if [[ -n ${CURRENT_COMPOSE_ID} ]]; then
|
||||
+ if [[ ${CURRENT_COMPOSE_ID} == *-updates-* ]]; then
|
||||
+ BATCH_COMPOSE="updates/"
|
||||
+ else
|
||||
+ BATCH_COMPOSE=""
|
||||
+ fi
|
||||
+ else
|
||||
+ BATCH_COMPOSE="updates/"
|
||||
+ CURRENT_COMPOSE_ID=latest-RHEL-$VERSION_ID
|
||||
+ fi
|
||||
+
|
||||
+ # use latest compose if specific compose is not accessible
|
||||
+ RC=$(curl -skIw '%{http_code}' -o /dev/null "http://download.eng.bos.redhat.com/rhel-${VERSION_ID%%.*}/nightly/${BATCH_COMPOSE}RHEL-${VERSION_ID%%.*}/${CURRENT_COMPOSE_ID}/STATUS")
|
||||
+ if [[ $RC != "200" ]]; then
|
||||
+ CURRENT_COMPOSE_ID=latest-RHEL-${VERSION_ID%%}
|
||||
+ fi
|
||||
+ ;;
|
||||
esac
|
||||
|
||||
if [ "$TMT_REBOOT_COUNT" -eq 0 ]; then
|
||||
@@ -93,6 +117,22 @@ COMMONEOF
|
||||
tee "$FEDORA_CI_CONTAINERFILE" > /dev/null << FEDORACIEOF
|
||||
FROM $TIER1_IMAGE_URL
|
||||
|
||||
+RUN <<REPORUN
|
||||
+tee "/etc/yum.repos.d/rhel.repo" >/dev/null <<RHELREPOEOF
|
||||
+[rhel-baseos]
|
||||
+name=baseos
|
||||
+baseurl=http://download.eng.bos.redhat.com/rhel-${VERSION_ID%%.*}/nightly/${BATCH_COMPOSE}RHEL-${VERSION_ID%%.*}/${CURRENT_COMPOSE_ID}/compose/BaseOS/${ARCH}/os/
|
||||
+enabled=1
|
||||
+gpgcheck=0
|
||||
+
|
||||
+[rhel-appstream]
|
||||
+name=appstream
|
||||
+baseurl=http://download.eng.bos.redhat.com/rhel-${VERSION_ID%%.*}/nightly/${BATCH_COMPOSE}RHEL-${VERSION_ID%%.*}/${CURRENT_COMPOSE_ID}/compose/AppStream/${ARCH}/os/
|
||||
+enabled=1
|
||||
+gpgcheck=0
|
||||
+RHELREPOEOF
|
||||
+REPORUN
|
||||
+
|
||||
RUN dnf -y upgrade /rpms/*.rpm
|
||||
FEDORACIEOF
|
||||
cat >"$CONTAINERFILE" <<REALEOF
|
||||
@ -1,14 +0,0 @@
|
||||
diff --git i/tmt/tests/bootc-install-provision.sh w/tmt/tests/bootc-install-provision.sh
|
||||
index 6c9968c..c617d5e 100755
|
||||
--- i/tmt/tests/bootc-install-provision.sh
|
||||
+++ w/tmt/tests/bootc-install-provision.sh
|
||||
@@ -50,7 +50,8 @@ if [ "$TMT_REBOOT_COUNT" -eq 0 ]; then
|
||||
fi
|
||||
|
||||
# Some rhts-*, rstrnt-* and tmt-* commands are in /usr/local/bin
|
||||
- cp -r /usr/local/bin "$BOOTC_TEMPDIR"
|
||||
+ cp -r /var/lib/tmt/scripts "$BOOTC_TEMPDIR/bin"
|
||||
+ ls -al "$BOOTC_TEMPDIR/bin"
|
||||
|
||||
# Check image building folder content
|
||||
ls -al "$BOOTC_TEMPDIR"
|
||||
55
Containerfile.packit
Normal file
55
Containerfile.packit
Normal file
@ -0,0 +1,55 @@
|
||||
# Build image for system-reinstall-bootc test
|
||||
|
||||
# Use centos-bootc:stream10 as default
|
||||
FROM quay.io/centos-bootc/centos-bootc:stream10
|
||||
|
||||
WORKDIR /bootc-test
|
||||
|
||||
# Save testing farm run files
|
||||
COPY ARTIFACTS /var/ARTIFACTS
|
||||
# Copy bootc repo
|
||||
COPY test-artifacts /var/share/test-artifacts
|
||||
|
||||
ARG GATING
|
||||
RUN <<EORUN
|
||||
set -xeuo pipefail
|
||||
. /usr/lib/os-release
|
||||
if [[ $ID == "rhel" ]]; then
|
||||
cp rhel.repo /etc/yum.repos.d/
|
||||
fi
|
||||
# OSCI uses /var/lib/tmt/scripts to save tmt-* commands
|
||||
# Fedora CI and Packit use /usr/local/bin
|
||||
if [[ -d scripts ]]; then
|
||||
mkdir -p /var/lib/tmt
|
||||
cp -r scripts /var/lib/tmt/
|
||||
ls -al /var/lib/tmt/scripts
|
||||
else
|
||||
cp -r bin /usr/local
|
||||
ls -al /usr/local/bin
|
||||
fi
|
||||
cp test-artifacts.repo /etc/yum.repos.d/
|
||||
dnf -y update bootc
|
||||
# Required by tmt avc checking after test
|
||||
dnf -y install audit
|
||||
./provision-derived.sh
|
||||
|
||||
# For test-22-logically-bound-install
|
||||
cp -a lbi/usr/. /usr
|
||||
for x in curl.container curl-base.image podman.image; do
|
||||
ln -s /usr/share/containers/systemd/$x /usr/lib/bootc/bound-images.d/$x
|
||||
done
|
||||
|
||||
# Add some testing kargs into our dev builds
|
||||
install -D -t /usr/lib/bootc/kargs.d test-kargs/*
|
||||
# Also copy in some default install configs we use for testing
|
||||
install -D -t /usr/lib/bootc/install/ install-test-configs/*
|
||||
|
||||
# Remove bootc repo, bootc updated already
|
||||
rm -rf /var/share/test-artifacts /etc/yum.repos.d/test-artifacts.repo
|
||||
# Clean up dnf
|
||||
dnf -y clean all
|
||||
rm -rf /var/cache /var/lib/dnf
|
||||
|
||||
# Finally, test our own linting
|
||||
# bootc container lint --fatal-warnings
|
||||
EORUN
|
||||
@ -2,48 +2,88 @@ discover:
|
||||
how: fmf
|
||||
dist-git-source: true
|
||||
dist-git-install-builddeps: true
|
||||
execute:
|
||||
how: tmt
|
||||
environment:
|
||||
NIGHTLY_COMPOSE_SITE: download.eng.bos.redhat.com
|
||||
prepare:
|
||||
# Install image mode system on package mode system
|
||||
- how: install
|
||||
order: 97
|
||||
package:
|
||||
- podman
|
||||
- skopeo
|
||||
- jq
|
||||
execute:
|
||||
how: tmt
|
||||
- bootc
|
||||
- system-reinstall-bootc
|
||||
- expect
|
||||
- ansible-core
|
||||
- zstd
|
||||
- how: shell
|
||||
order: 98
|
||||
script:
|
||||
- pwd && ls -al && ls -al /var/share/test-artifacts && mkdir -p bootc && cp /var/share/test-artifacts/*.src.rpm bootc
|
||||
- cd bootc && ls -al && rpm2cpio *.src.rpm | cpio -idmv && rm -f *-vendor.tar.zstd && zstd -d *.tar.zstd && tar -xvf *.tar -C . --strip-components=1 && ls -al
|
||||
- cd bootc/hack && ./provision-packit.sh
|
||||
# tmt-reboot and reboot do not work in this case
|
||||
# reboot in ansible is the only way to reboot in tmt prepare
|
||||
- how: ansible
|
||||
order: 99
|
||||
playbook:
|
||||
- https://github.com/bootc-dev/bootc/raw/refs/heads/main/hack/packit-reboot.yml
|
||||
|
||||
/test-01-readonly:
|
||||
/readonly-tests:
|
||||
summary: Execute booted readonly/nondestructive tests
|
||||
discover+:
|
||||
how: fmf
|
||||
test:
|
||||
- /tmt/tests/bootc-install-provision
|
||||
- test-01-readonly
|
||||
- /tmt/tests/test-01-readonly
|
||||
|
||||
/test-20-local-upgrade:
|
||||
summary: Execute local upgrade tests
|
||||
discover+:
|
||||
how: fmf
|
||||
test:
|
||||
- /tmt/tests/bootc-install-provision
|
||||
- test-20-local-upgrade
|
||||
- /tmt/tests/test-20-local-upgrade
|
||||
|
||||
/test-21-logically-bound-switch:
|
||||
summary: Execute logically bound images tests for switching images
|
||||
discover+:
|
||||
how: fmf
|
||||
test:
|
||||
- /tmt/tests/bootc-install-provision
|
||||
- test-21-logically-bound-switch
|
||||
- /tmt/tests/test-21-logically-bound-switch
|
||||
|
||||
/test-22-logically-bound-install:
|
||||
summary: Execute logically bound images tests for switching images
|
||||
environment+:
|
||||
LBI: enabled
|
||||
discover+:
|
||||
how: fmf
|
||||
test:
|
||||
- /tmt/tests/bootc-install-provision
|
||||
- test-22-logically-bound-install
|
||||
- /tmt/tests/test-22-logically-bound-install
|
||||
|
||||
/test-23-install-outside-container:
|
||||
summary: Execute tests for installing outside of a container
|
||||
discover+:
|
||||
how: fmf
|
||||
test:
|
||||
- /tmt/tests/bootc-install-provision
|
||||
- test-23-install-outside-container
|
||||
- /tmt/tests/test-23-install-outside-container
|
||||
|
||||
/test-24-local-upgrade-reboot:
|
||||
summary: Execute local upgrade tests with automated reboot
|
||||
discover+:
|
||||
how: fmf
|
||||
test:
|
||||
- /tmt/tests/test-24-local-upgrade-reboot
|
||||
|
||||
/test-25-soft-reboot:
|
||||
summary: Soft reboot support
|
||||
discover+:
|
||||
how: fmf
|
||||
test:
|
||||
- /tmt/tests/test-25-soft-reboot
|
||||
|
||||
/test-28-factory-reset:
|
||||
summary: Factory reset
|
||||
discover:
|
||||
how: fmf
|
||||
test:
|
||||
- /tmt/tests/test-28-factory-reset
|
||||
|
||||
93
provision-packit.sh
Executable file
93
provision-packit.sh
Executable file
@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
set -exuo pipefail
|
||||
|
||||
# Check environment
|
||||
printenv
|
||||
|
||||
# temp folder to save building files and folders
|
||||
BOOTC_TEMPDIR=$(mktemp -d)
|
||||
trap 'rm -rf -- "$BOOTC_TEMPDIR"' EXIT
|
||||
|
||||
# Copy files and folders in hack to TEMPDIR
|
||||
cp -a . "$BOOTC_TEMPDIR"
|
||||
|
||||
# Keep testing farm run folder
|
||||
cp -r /var/ARTIFACTS "$BOOTC_TEMPDIR"
|
||||
|
||||
# Copy bootc repo
|
||||
cp -r /var/share/test-artifacts "$BOOTC_TEMPDIR"
|
||||
|
||||
ARCH=$(uname -m)
|
||||
# Get OS info
|
||||
source /etc/os-release
|
||||
|
||||
# Some rhts-*, rstrnt-* and tmt-* commands are in /usr/local/bin
|
||||
if [[ -d /var/lib/tmt/scripts ]]; then
|
||||
cp -r /var/lib/tmt/scripts "$BOOTC_TEMPDIR"
|
||||
ls -al "${BOOTC_TEMPDIR}/scripts"
|
||||
else
|
||||
cp -r /usr/local/bin "$BOOTC_TEMPDIR"
|
||||
ls -al "${BOOTC_TEMPDIR}/bin"
|
||||
fi
|
||||
|
||||
# Get base image URL
|
||||
TEST_OS="${ID}-${VERSION_ID}"
|
||||
BASE=$(cat os-image-map.json | jq -r --arg v "$TEST_OS" '.[$v]')
|
||||
|
||||
if [[ "$ID" == "rhel" ]]; then
|
||||
# OSCI gating only
|
||||
CURRENT_COMPOSE_ID=$(skopeo inspect --no-tags --retry-times=5 --tls-verify=false "docker://${BASE}" | jq -r '.Labels."redhat.compose-id"')
|
||||
|
||||
if [[ -n ${CURRENT_COMPOSE_ID} ]]; then
|
||||
if [[ ${CURRENT_COMPOSE_ID} == *-updates-* ]]; then
|
||||
BATCH_COMPOSE="updates/"
|
||||
else
|
||||
BATCH_COMPOSE=""
|
||||
fi
|
||||
else
|
||||
BATCH_COMPOSE="updates/"
|
||||
CURRENT_COMPOSE_ID=latest-RHEL-$VERSION_ID
|
||||
fi
|
||||
|
||||
# use latest compose if specific compose is not accessible
|
||||
RC=$(curl -skIw '%{http_code}' -o /dev/null "http://${NIGHTLY_COMPOSE_SITE}/rhel-${VERSION_ID%%.*}/nightly/${BATCH_COMPOSE}RHEL-${VERSION_ID%%.*}/${CURRENT_COMPOSE_ID}/STATUS")
|
||||
if [[ $RC != "200" ]]; then
|
||||
CURRENT_COMPOSE_ID=latest-RHEL-${VERSION_ID%%}
|
||||
fi
|
||||
|
||||
# generate rhel repo
|
||||
tee "${BOOTC_TEMPDIR}/rhel.repo" >/dev/null <<REPOEOF
|
||||
[rhel-baseos]
|
||||
name=baseos
|
||||
baseurl=http://${NIGHTLY_COMPOSE_SITE}/rhel-${VERSION_ID%%.*}/nightly/${BATCH_COMPOSE}RHEL-${VERSION_ID%%.*}/${CURRENT_COMPOSE_ID}/compose/BaseOS/${ARCH}/os/
|
||||
enabled=1
|
||||
gpgcheck=0
|
||||
|
||||
[rhel-appstream]
|
||||
name=appstream
|
||||
baseurl=http://${NIGHTLY_COMPOSE_SITE}/rhel-${VERSION_ID%%.*}/nightly/${BATCH_COMPOSE}RHEL-${VERSION_ID%%.*}/${CURRENT_COMPOSE_ID}/compose/AppStream/${ARCH}/os/
|
||||
enabled=1
|
||||
gpgcheck=0
|
||||
REPOEOF
|
||||
cp "${BOOTC_TEMPDIR}/rhel.repo" /etc/yum.repos.d
|
||||
fi
|
||||
|
||||
ls -al /etc/yum.repos.d
|
||||
cat /etc/yum.repos.d/test-artifacts.repo
|
||||
ls -al /var/share/test-artifacts
|
||||
|
||||
# copy bootc rpm repo into image building root
|
||||
cp /etc/yum.repos.d/test-artifacts.repo "$BOOTC_TEMPDIR"
|
||||
|
||||
# Let's check things in hack folder
|
||||
ls -al "$BOOTC_TEMPDIR"
|
||||
|
||||
# Do not use just because it's only available on Fedora, not on CS and RHEL
|
||||
podman build --jobs=4 --from "$BASE" -v "$BOOTC_TEMPDIR":/bootc-test:z -t localhost/bootc-integration -f "${BOOTC_TEMPDIR}/Containerfile.packit" "$BOOTC_TEMPDIR"
|
||||
|
||||
# Keep these in sync with what's used in hack/lbi
|
||||
podman pull -q --retry 5 --retry-delay 5s quay.io/curl/curl:latest quay.io/curl/curl-base:latest registry.access.redhat.com/ubi9/podman:latest
|
||||
|
||||
# Run system-reinstall-bootc
|
||||
# TODO make it more scriptable instead of expect + send
|
||||
./system-reinstall-bootc.exp
|
||||
Loading…
Reference in New Issue
Block a user