Skip to content

Commit 4a61d74

Browse files
committed
test: update bootc install script to support Fedora CI gating test
Signed-off-by: Xiaofeng Wang <[email protected]>
1 parent df879ed commit 4a61d74

File tree

2 files changed

+71
-38
lines changed

2 files changed

+71
-38
lines changed

hack/provision-derived.sh

+5-20
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,11 @@ mkdir -p ~/.config/nushell
1010
echo '$env.config = { show_banner: false, }' > ~/.config/nushell/config.nu
1111
touch ~/.config/nushell/env.nu
1212

13-
. /usr/lib/os-release
14-
case "${ID}-${VERSION_ID}" in
15-
"centos-9")
16-
dnf config-manager --set-enabled crb
17-
dnf -y install epel-release epel-next-release
18-
dnf -y install nu
19-
dnf clean all
20-
;;
21-
"centos-10")
22-
# nu is not available in CS10
23-
curl -kL "https://github.com/nushell/nushell/releases/download/0.103.0/nu-0.103.0-$(uname -m)-unknown-linux-gnu.tar.gz" --output nu.tar.gz
24-
mkdir -p nu && tar zvxf nu.tar.gz --strip-components=1 -C nu
25-
mv nu/nu /usr/bin/nu
26-
rm -rf nu nu.tar.gz
27-
;;
28-
"fedora-"*)
29-
dnf -y install nu
30-
dnf clean all
31-
;;
32-
esac
13+
# Simplify the nu installation to work with RHEL, CS and Fedora
14+
curl -kL "https://github.com/nushell/nushell/releases/download/0.103.0/nu-0.103.0-$(uname -m)-unknown-linux-gnu.tar.gz" --output nu.tar.gz
15+
mkdir -p nu && tar zvxf nu.tar.gz --strip-components=1 -C nu
16+
mv nu/nu /usr/bin/nu
17+
rm -rf nu nu.tar.gz
3318

3419
# Stock extra cleaning of logs and caches in general (mostly dnf)
3520
rm /var/log/* /var/cache /var/lib/{dnf,rpm-state,rhsm} -rf

tmt/tests/test-00-bootc-install.sh

+66-18
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,27 @@ case "$ID" in
1919
esac
2020

2121
if [ "$TMT_REBOOT_COUNT" -eq 0 ]; then
22+
# Fedora CI: https://github.com/fedora-ci/dist-git-pipeline/blob/master/Jenkinsfile#L145
23+
# OSCI: https://gitlab.cee.redhat.com/osci-pipelines/dist-git-pipeline/-/blob/master/Jenkinsfile?ref_type=heads#L93
24+
if [[ -v KOJI_TASK_ID ]] || [[ -v CI_KOJI_TASK_ID ]]; then
25+
echo "$TMT_SOURCE_DIR"
26+
ls -al "$TMT_SOURCE_DIR"
27+
ls -al "$TMT_SOURCE_DIR/SRPMS"
28+
ls -al /etc/yum.repos.d
29+
cat /etc/yum.repos.d/test-artifacts.repo
30+
ls -al /var/share/test-artifacts
31+
# get bootc and system-reinstall-bootc rpm package name
32+
BOOTC_RPM_FULL_PATH=$(find /var/share/test-artifacts/ -type f | grep -E '/bootc-[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}-[0-9]{1,2}.(fc|el)[0-9]{1,2}.(x86_64|aarch64).rpm$')
33+
BOOTC_RPM_FILE_NAME=$(basename "$BOOTC_RPM_FULL_PATH")
34+
SYSTEM_REINSTALL_BOOTC_RPM_FULL_PATH=$(find /var/share/test-artifacts/ -type f | grep -E '/system-reinstall-bootc-[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}-[0-9]{1,2}.(fc|el)[0-9]{1,2}.(x86_64|aarch64).rpm$')
35+
SYSTEM_REINSTALL_BOOTC_RPM_FILE_NAME=$(basename "$SYSTEM_REINSTALL_BOOTC_RPM_FULL_PATH")
36+
# Copy bootc rpm package to image build root folder
37+
cp "$BOOTC_RPM_FULL_PATH" "$SYSTEM_REINSTALL_BOOTC_RPM_FULL_PATH" "$BOOTC_TEMPDIR"
38+
fi
39+
2240
# Copy bootc root folder to image build root folder
41+
# Required by bootc CI to build bootc binary
42+
# And Required by Fedora CI for some folders for test
2343
cp -a ../../. "$BOOTC_TEMPDIR"
2444

2545
# TMT needs this key
@@ -40,31 +60,15 @@ if [ "$TMT_REBOOT_COUNT" -eq 0 ]; then
4060
ls -al "$BOOTC_TEMPDIR"
4161

4262
CONTAINERFILE=${BOOTC_TEMPDIR}/Containerfile
43-
tee "$CONTAINERFILE" > /dev/null << REALEOF
44-
FROM $TIER1_IMAGE_URL as build
45-
46-
COPY contrib /contrib
47-
COPY hack/build.sh /build.sh
48-
RUN /build.sh && rm -v /build.sh
49-
COPY . /build
50-
WORKDIR /build
51-
52-
RUN mkdir -p /build/target/dev-rootfs
53-
RUN --mount=type=cache,target=/build/target --mount=type=cache,target=/var/roothome make test-bin-archive && mkdir -p /out && cp target/bootc.tar.zst /out
54-
55-
FROM $TIER1_IMAGE_URL
5663

64+
COMMON_CONTAINERFILE="${BOOTC_TEMPDIR}/common_containerfile"
65+
tee "$COMMON_CONTAINERFILE" > /dev/null << COMMONEOF
5766
COPY hack/provision-derived.sh /tmp
5867
RUN /tmp/provision-derived.sh && rm -f /tmp/*.sh
5968
# Also copy in some default install configs we use for testing
6069
COPY hack/install-test-configs/* /usr/lib/bootc/install/
6170
# And some test kargs
6271
COPY hack/test-kargs /usr/lib/bootc/kargs.d/
63-
# Inject our built code
64-
COPY --from=build /out/bootc.tar.zst /tmp
65-
RUN tar -C / --zstd -xvf /tmp/bootc.tar.zst && rm -vrf /tmp/*
66-
# Also copy over arbitrary bits from the target root
67-
COPY --from=build /build/target/dev-rootfs/ /
6872
6973
RUN <<EORUN
7074
set -xeuo pipefail
@@ -91,7 +95,51 @@ COPY bin /usr/local/bin
9195
9296
# In Testing Farm, all ssh things should be reserved for ssh command run after reboot
9397
COPY .ssh /var/roothome/.ssh
98+
COMMONEOF
99+
100+
if [[ -v KOJI_TASK_ID ]] || [[ -v CI_KOJI_TASK_ID ]]; then
101+
FEDORA_CI_CONTAINERFILE="${BOOTC_TEMPDIR}/fedora_ci_containerfile"
102+
tee "$FEDORA_CI_CONTAINERFILE" > /dev/null << FEDORACIEOF
103+
FROM $TIER1_IMAGE_URL
104+
105+
COPY $BOOTC_RPM_FILE_NAME /$BOOTC_RPM_FILE_NAME
106+
COPY $SYSTEM_REINSTALL_BOOTC_RPM_FILE_NAME /$SYSTEM_REINSTALL_BOOTC_RPM_FILE_NAME
107+
RUN dnf remove -y bootc system-reinstall-bootc && dnf install -y /$BOOTC_RPM_FILE_NAME /$SYSTEM_REINSTALL_BOOTC_RPM_FILE_NAME rpm-ostree
108+
FEDORACIEOF
109+
cat >"$CONTAINERFILE" <<REALEOF
110+
$(cat "$FEDORA_CI_CONTAINERFILE")
111+
$(cat "$COMMON_CONTAINERFILE")
112+
94113
REALEOF
114+
else
115+
BOOTC_CI_CONTAINERFILE="${BOOTC_TEMPDIR}/bootc_ci_containerfile"
116+
tee "$BOOTC_CI_CONTAINERFILE" > /dev/null << BOOTCCIEOF
117+
FROM $TIER1_IMAGE_URL as build
118+
119+
COPY contrib /contrib
120+
COPY hack/build.sh /build.sh
121+
RUN /build.sh && rm -v /build.sh
122+
COPY . /build
123+
WORKDIR /build
124+
125+
RUN mkdir -p /build/target/dev-rootfs
126+
RUN --mount=type=cache,target=/build/target --mount=type=cache,target=/var/roothome make test-bin-archive && mkdir -p /out && cp target/bootc.tar.zst /out
127+
128+
FROM $TIER1_IMAGE_URL
129+
130+
# Inject our built code
131+
COPY --from=build /out/bootc.tar.zst /tmp
132+
RUN tar -C / --zstd -xvf /tmp/bootc.tar.zst && rm -vrf /tmp/*
133+
# Also copy over arbitrary bits from the target root
134+
COPY --from=build /build/target/dev-rootfs/ /
135+
136+
BOOTCCIEOF
137+
cat >"$CONTAINERFILE" <<REALEOF
138+
$(cat "$BOOTC_CI_CONTAINERFILE")
139+
$(cat "$COMMON_CONTAINERFILE")
140+
REALEOF
141+
fi
142+
95143

96144
if [[ -d "/var/ARTIFACTS" ]]; then
97145
# In Testing Farm, TMT work dir /var/ARTIFACTS should be reserved

0 commit comments

Comments
 (0)