@@ -19,8 +19,19 @@ case "$ID" in
19
19
esac
20
20
21
21
if [ " $TMT_REBOOT_COUNT " -eq 0 ]; then
22
- # Copy bootc root folder to image build root folder
23
- cp -a ../../. " $BOOTC_TEMPDIR "
22
+ # Let's move to bootc root folder
23
+ cd ../..
24
+ # Fedora CI: https://github.com/fedora-ci/dist-git-pipeline/blob/master/Jenkinsfile#L145
25
+ # OSCI: https://gitlab.cee.redhat.com/osci-pipelines/dist-git-pipeline/-/blob/master/Jenkinsfile?ref_type=heads#L93
26
+ if [[ -v KOJI_TASK_ID ]] || [[ -v CI_KOJI_TASK_ID ]]; then
27
+ # Just left those ls commands here to ring the bell for me when something changed
28
+ echo " $TMT_SOURCE_DIR "
29
+ ls -al " $TMT_SOURCE_DIR "
30
+ ls -al " $TMT_SOURCE_DIR /SRPMS"
31
+ ls -al /etc/yum.repos.d
32
+ cat /etc/yum.repos.d/test-artifacts.repo
33
+ ls -al /var/share/test-artifacts
34
+ fi
24
35
25
36
# TMT needs this key
26
37
cp -r /root/.ssh " $BOOTC_TEMPDIR "
@@ -40,34 +51,18 @@ if [ "$TMT_REBOOT_COUNT" -eq 0 ]; then
40
51
ls -al " $BOOTC_TEMPDIR "
41
52
42
53
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
54
55
- FROM $TIER1_IMAGE_URL
55
+ COMMON_CONTAINERFILE=" ${BOOTC_TEMPDIR} /common_containerfile"
56
+ tee " $COMMON_CONTAINERFILE " > /dev/null << COMMONEOF
57
+ RUN <<EORUN
58
+ set -xeuo pipefail
56
59
57
- COPY hack/provision-derived.sh /tmp
58
- RUN /tmp/ provision-derived.sh && rm -f /tmp/* .sh
60
+ # Provision test requirement
61
+ /code/hack/ provision-derived.sh
59
62
# Also copy in some default install configs we use for testing
60
- COPY hack/install-test-configs/* /usr/lib/bootc/install/
63
+ cp -a /code/ hack/install-test-configs/* /usr/lib/bootc/install/
61
64
# And some test kargs
62
- 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/ /
68
-
69
- RUN <<EORUN
70
- set -xeuo pipefail
65
+ cp -a /code/hack/test-kargs/* /usr/lib/bootc/kargs.d/
71
66
72
67
# For testing farm
73
68
mkdir -p -m 0700 /var/roothome
@@ -91,7 +86,46 @@ COPY bin /usr/local/bin
91
86
92
87
# In Testing Farm, all ssh things should be reserved for ssh command run after reboot
93
88
COPY .ssh /var/roothome/.ssh
89
+ COMMONEOF
90
+
91
+ if [[ -v KOJI_TASK_ID ]] || [[ -v CI_KOJI_TASK_ID ]]; then
92
+ FEDORA_CI_CONTAINERFILE=" ${BOOTC_TEMPDIR} /fedora_ci_containerfile"
93
+ tee " $FEDORA_CI_CONTAINERFILE " > /dev/null << FEDORACIEOF
94
+ FROM $TIER1_IMAGE_URL
95
+
96
+ RUN dnf -y upgrade /rpms/*.rpm
97
+ FEDORACIEOF
98
+ cat > " $CONTAINERFILE " << REALEOF
99
+ $( cat " $FEDORA_CI_CONTAINERFILE " )
100
+ $( cat " $COMMON_CONTAINERFILE " )
101
+
94
102
REALEOF
103
+ else
104
+ BOOTC_CI_CONTAINERFILE=" ${BOOTC_TEMPDIR} /bootc_ci_containerfile"
105
+ tee " $BOOTC_CI_CONTAINERFILE " > /dev/null << BOOTCCIEOF
106
+ FROM $TIER1_IMAGE_URL as build
107
+
108
+ WORKDIR /code
109
+ RUN hack/build.sh
110
+
111
+ RUN mkdir -p /build/target/dev-rootfs
112
+ 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
113
+
114
+ FROM $TIER1_IMAGE_URL
115
+
116
+ # Inject our built code
117
+ COPY --from=build /out/bootc.tar.zst /tmp
118
+ RUN tar -C / --zstd -xvf /tmp/bootc.tar.zst && rm -vrf /tmp/*
119
+ # Also copy over arbitrary bits from the target root
120
+ COPY --from=build /build/target/dev-rootfs/ /
121
+
122
+ BOOTCCIEOF
123
+ cat > " $CONTAINERFILE " << REALEOF
124
+ $( cat " $BOOTC_CI_CONTAINERFILE " )
125
+ $( cat " $COMMON_CONTAINERFILE " )
126
+ REALEOF
127
+ fi
128
+
95
129
96
130
if [[ -d " /var/ARTIFACTS" ]]; then
97
131
# In Testing Farm, TMT work dir /var/ARTIFACTS should be reserved
@@ -103,16 +137,36 @@ REALEOF
103
137
104
138
# For test-22-logically-bound-install
105
139
if [[ " $LBI " == " enabled" ]]; then
106
- echo " COPY tmt/tests/lbi/usr/. /usr" >> " $CONTAINERFILE "
107
- echo " RUN ln -s /usr/share/containers/systemd/curl.container /usr/lib/bootc/bound-images.d/curl.container && ln -s /usr/share/containers/systemd/curl-base.image /usr/lib/bootc/bound-images.d/curl-base.image && ln -s /usr/share/containers/systemd/podman.image /usr/lib/bootc/bound-images.d/podman.image" >> " $CONTAINERFILE "
140
+ echo " RUN cp -a /code/tmt/tests/lbi/usr/. /usr && ln -s /usr/share/containers/systemd/curl.container /usr/lib/bootc/bound-images.d/curl.container && ln -s /usr/share/containers/systemd/curl-base.image /usr/lib/bootc/bound-images.d/curl-base.image && ln -s /usr/share/containers/systemd/podman.image /usr/lib/bootc/bound-images.d/podman.image" >> " $CONTAINERFILE "
108
141
podman pull --retry 5 --retry-delay 5s quay.io/curl/curl:latest
109
142
podman pull --retry 5 --retry-delay 5s quay.io/curl/curl-base:latest
110
143
podman pull --retry 5 --retry-delay 5s registry.access.redhat.com/ubi9/podman:latest
111
144
fi
112
145
113
146
cat " $CONTAINERFILE "
114
147
# Retry here to avoid quay.io "502 Bad Gateway"
115
- podman build --retry 5 --retry-delay 5s --tls-verify=false -t localhost/bootc:tmt -f " $CONTAINERFILE " " $BOOTC_TEMPDIR "
148
+ # bind mount bootc source code folder for bootc binary building and run test provision
149
+ # bind mount /var/share/test-artifacts for bootc RPM package installation in Fedora CI and OSCI
150
+ if [[ -v KOJI_TASK_ID ]] || [[ -v CI_KOJI_TASK_ID ]]; then
151
+ podman build \
152
+ --retry 5 \
153
+ --retry-delay 5s \
154
+ --tls-verify=false \
155
+ -v /var/share/test-artifacts:/rpms:z \
156
+ -v " $( pwd) " :/code:z \
157
+ -t localhost/bootc:tmt \
158
+ -f " $CONTAINERFILE " \
159
+ " $BOOTC_TEMPDIR "
160
+ else
161
+ podman build \
162
+ --retry 5 \
163
+ --retry-delay 5s \
164
+ --tls-verify=false \
165
+ -v " $( pwd) " :/code:z \
166
+ -t localhost/bootc:tmt \
167
+ -f " $CONTAINERFILE " \
168
+ " $BOOTC_TEMPDIR "
169
+ fi
116
170
117
171
podman images
118
172
podman run \
0 commit comments