Compare commits

...

No commits in common. "c9-beta" and "c10s-111" have entirely different histories.

11 changed files with 363 additions and 145 deletions

View File

@ -1,2 +0,0 @@
41a56ab6bb51f99445735cf567ace0e9297fe8bc SOURCES/bootc-1.13.0-vendor.tar.zstd
46a80d31f9b5e715e75a5ff7d09a5663d48b0ab0 SOURCES/bootc-1.13.0.tar.zstd

1
.fmf/version Normal file
View File

@ -0,0 +1 @@
1

52
.gitignore vendored
View File

@ -1,2 +1,50 @@
SOURCES/bootc-1.13.0-vendor.tar.zstd
SOURCES/bootc-1.13.0.tar.zstd
/bootc-0.1.2.tar.zst
/bootc-0.1.2-vendor.tar.zst
/bootc-0.1.3-vendor.tar.zstd
/bootc-0.1.3.tar.zst
/bootc-0.1.4-vendor.tar.zstd
/bootc-0.1.4.tar.zstd
/bootc-0.1.5-vendor.tar.zstd
/bootc-0.1.5.tar.zstd
/bootc-0.1.6-vendor.tar.zstd
/bootc-0.1.6.tar.zstd
/bootc-0.1.12.tar.zstd
/bootc-0.1.12-vendor.tar.zstd
/bootc-0.1.13.tar.zstd
/bootc-0.1.13-vendor.tar.zstd
/bootc-0.1.14-vendor.tar.zstd
/bootc-0.1.14.tar.zstd
/bootc-0.1.15.tar.zstd
/bootc-0.1.15-vendor.tar.zstd
/bootc-0.1.16.tar.zstd
/bootc-0.1.16-vendor.tar.zstd
/bootc-1.1.0.tar.zstd
/bootc-1.1.0-vendor.tar.zstd
/bootc-1.1.2.tar.zstd
/bootc-1.1.2-vendor.tar.zstd
/bootc-1.1.3-vendor.tar.zstd
/bootc-1.1.3.tar.zstd
/bootc-1.1.4.tar.zstd
/bootc-1.1.4-vendor.tar.zstd
/bootc-1.1.5.tar.zstd
/bootc-1.1.5-vendor.tar.zstd
/bootc-1.1.6-vendor.tar.zstd
/bootc-1.1.6.tar.zstd
/bootc-1.1.7.tar.zstd
/bootc-1.1.7-vendor.tar.zstd
/bootc-1.3.0.tar.zstd
/bootc-1.3.0-vendor.tar.zstd
/bootc-1.4.0.tar.zstd
/bootc-1.4.0-vendor.tar.zstd
/bootc-1.5.1.tar.zstd
/bootc-1.5.1-vendor.tar.zstd
/bootc-1.7.0-vendor.tar.zstd
/bootc-1.7.0.tar.zstd
/bootc-1.7.1-vendor.tar.zstd
/bootc-1.7.1.tar.zstd
/bootc-1.8.0-vendor.tar.zstd
/bootc-1.8.0.tar.zstd
/bootc-1.10.0.tar.zstd
/bootc-1.10.0-vendor.tar.zstd
/bootc-1.11.0.tar.zstd
/bootc-1.11.0-vendor.tar.zstd

View File

@ -0,0 +1,45 @@
From: bootc maintainers <bootc@example.com>
Subject: Add RHEL entries to os-image-map.json
The os-image-map.json file is missing entries for RHEL, which causes
the provision-packit.sh script to fail when running on RHEL systems.
The jq lookup returns "null" when the rhel-X.Y key is not found, resulting
in skopeo failing with:
Error parsing image name "docker://null"
This patch adds entries for RHEL 9.7, 9.8, 10.0, 10.1, and 10.2 pointing
to CentOS Stream 9 and 10 images respectively.
---
hack/os-image-map.json | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/hack/os-image-map.json b/hack/os-image-map.json
--- a/hack/os-image-map.json
+++ b/hack/os-image-map.json
@@ -4,13 +4,23 @@
"centos-10": "quay.io/centos-bootc/centos-bootc:stream10",
"fedora-42": "quay.io/fedora/fedora-bootc:42",
"fedora-43": "quay.io/fedora/fedora-bootc:43",
- "fedora-44": "quay.io/fedora/fedora-bootc:rawhide"
+ "fedora-44": "quay.io/fedora/fedora-bootc:rawhide",
+ "rhel-9.7": "quay.io/centos-bootc/centos-bootc:stream9",
+ "rhel-9.8": "quay.io/centos-bootc/centos-bootc:stream9",
+ "rhel-10.0": "quay.io/centos-bootc/centos-bootc:stream10",
+ "rhel-10.1": "quay.io/centos-bootc/centos-bootc:stream10",
+ "rhel-10.2": "quay.io/centos-bootc/centos-bootc:stream10"
},
"buildroot-base": {
"centos-9": "quay.io/centos/centos:stream9",
"centos-10": "quay.io/centos/centos:stream10",
"fedora-42": "quay.io/fedora/fedora:42",
"fedora-43": "quay.io/fedora/fedora:43",
- "fedora-44": "quay.io/fedora/fedora:rawhide"
+ "fedora-44": "quay.io/fedora/fedora:rawhide",
+ "rhel-9.7": "quay.io/centos/centos:stream9",
+ "rhel-9.8": "quay.io/centos/centos:stream9",
+ "rhel-10.0": "quay.io/centos/centos:stream10",
+ "rhel-10.1": "quay.io/centos/centos:stream10",
+ "rhel-10.2": "quay.io/centos/centos:stream10"
}
}

53
Containerfile.packit Normal file
View File

@ -0,0 +1,53 @@
# 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/
else
cp -r bin /usr/local
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

3
README.md Normal file
View File

@ -0,0 +1,3 @@
# bootc
The bootc package

View File

@ -22,8 +22,8 @@
%endif
Name: bootc
Version: 1.13.0
Release: 1%{?dist}
Version: 1.11.0
Release: %{autorelease}
Summary: Bootable container system
# Apache-2.0
@ -39,6 +39,9 @@ URL: https://github.com/bootc-dev/bootc
Source0: %{url}/releases/download/v%{version}/bootc-%{version}.tar.zstd
Source1: %{url}/releases/download/v%{version}/bootc-%{version}-vendor.tar.zstd
# Add RHEL entries to os-image-map.json for gating tests
Patch0: 0001-Add-RHEL-entries-to-os-image-map.json.patch
# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
@ -145,8 +148,7 @@ sed -i -e '/https:\/\//d' cargo-vendor.txt
%endif
%install
# Pass CARGO_FEATURES explicitly to prevent auto-detection rebuild in install environment
%make_install INSTALL="install -p -c" CARGO_FEATURES="%{?with_rhsm:rhsm}"
%make_install INSTALL="install -p -c"
%if %{with ostree_ext}
make install-ostree-hooks DESTDIR=%{?buildroot}
%endif
@ -162,10 +164,7 @@ chmod +x %{?buildroot}/%{system_reinstall_bootc_install_podman_path}
# generate doc file list excluding directories; workaround for
# https://github.com/coreos/rpm-ostree/issues/5420
touch %{?buildroot}/%{_docdir}/bootc/baseimage/base/sysroot/.keepdir
find %{?buildroot}/%{_docdir} ! -type d -printf '%{_docdir}/%%P\n' | sort > bootcdoclist.txt
rm -f %{buildroot}/%{_datadir}/elvish/lib/bootc.elv
rm -f %{buildroot}/%{_datadir}/powershell/Modules/Bootc/Bootc.psm1
find %{?buildroot}/%{_docdir} ! -type d -printf '%{_docdir}/%%P\n' > bootcdoclist.txt
%if %{with check}
%check
@ -193,15 +192,6 @@ fi
%endif
%{_unitdir}/*
%{_mandir}/man*/*bootc*
%if 0%{?rhel} && 0%{?rhel} <= 9
%{_datadir}/bash-completion/completions/bootc
%{_datadir}/zsh/site-functions/_bootc
%{_datadir}/fish/vendor_completions.d/bootc.fish
%else
%{bash_completions_dir}/bootc
%{zsh_completions_dir}/_bootc
%{fish_completions_dir}/bootc.fish
%endif
%files -n system-reinstall-bootc
%{_bindir}/system-reinstall-bootc
@ -213,127 +203,4 @@ fi
%endif
%changelog
* Mon Feb 24 2026 Colin Walters <walters@verbum.org> - 1.13.0-1
- Update to 1.13.0
- https://github.com/bootc-dev/bootc/releases/tag/v1.13.0
- Resolves: RHEL-151443
* Fri Jan 17 2026 Colin Walters <walters@verbum.org> - 1.12.1-1
- Update to 1.12.1
- Fix mount point check regression breaking bootc-image-builder
- Resolves: RHEL-142112
* Thu Jan 09 2026 Colin Walters <walters@verbum.org> - 1.12.0-1
- Update to 1.12.0
- Resolves: RHEL-140335
* Thu Oct 30 2025 Joseph Marrero <jmarrero@fedoraproject.org> - 1.10.0-1
- Update to 1.10.0
- Resolves: #RHEL-125340
* Fri Sep 05 2025 Colin Walters <walters@verbum.org> - 1.8.0-2
- Update to 1.8.0
* Tue Aug 26 2025 Joseph Marrero <jmarrero@fedoraproject.org> - 1.7.1-1
- Update to 1.7.1
- Resolves: #RHEL-111339
* Thu Aug 21 2025 Joseph Marrero <jmarrero@fedoraproject.org> - 1.7.0-1
- Update to 1.7.0
- Resolves: #RHEL-109555
* Fri Jul 22 2025 Gursewak Mangat <gurssing@redhat.com> - 1.5.1-1
- Update to 1.5.1
- Resolves: #RHEL-104335
* Fri Jul 11 2025 Gursewak Mangat <gurssing@redhat.com> - 1.4.0-1
- Update to 1.4.0
- Resolves: #RHEL-103125
* Fri May 30 2025 Joseph Marrero <jmarrero@fedoraproject.org> - 1.3.0-1
- Update to 1.3.0
- Resolves: #RHEL-94597
* Tue Apr 15 2025 John Eckersberg <jeckersb@redhat.com> - 1.1.7-1
- Update to 1.1.7
- Resolves: #RHEL-87207
* Thu Mar 06 2025 Joseph Marrero <jmarrero@fedoraproject.org> - 1.1.6-3
- Backport https://github.com/containers/bootc/pull/1167
- Resolves: #RHEL-82293
* Wed Feb 19 2025 John Eckersberg <jeckersb@redhat.com> - 1.1.5-2
- Sync specfile from upstream
- Resolves: #RHEL-80264
- Resolves: #RHEL-81981
* Mon Feb 10 2025 Joseph Marrero <jmarrero@fedoraproject.org> - 1.1.5-1
- Update to 1.1.5
- Resolves: #RHEL-77733
* Thu Jan 23 2025 John Eckersberg <jeckersb@redhat.com> - 1.1.4-2
- Cherry pick patches for bootc-status-updated
- Resolves: #RHEL-72862
* Tue Jan 14 2025 Joseph Marrero <jmarrero@fedoraproject.org> - 1.1.4-1
- Update to 1.1.4
Resolves: #RHEL-72862
* Thu Nov 07 2024 Joseph Marrero <jmarrero@fedoraproject.org> - 1.1.2-1
- Update to 1.1.2
Resolves: #RHEL-66258
* Thu Oct 17 2024 Joseph Marrero <jmarrero@fedoraproject.org> - 1.1.0-1
- Update to 1.1.0
Resolves: #RHEL-63018
* Fri Aug 16 2024 Colin Walters <walters@verbum.org> - 0.1.15-1
- Update to 0.1.15
Resolves: #RHEL-50625
* Thu Jul 25 2024 Joseph Marrero <jmarrero@fedoraproject.org> - 0.1.14-1
- Update to 0.1.14
Resolves: #RHEL-50625, #RHEL-45325, #RHEL-36003
* Fri Jun 28 2024 Colin Walters <walters@verbum.org> - 0.1.13-2
- Update to 0.1.13
* Tue Jun 25 2024 Colin Walters <walters@verbum.org> - 0.1.12-3
- Update to 0.1.12
* Wed May 15 2024 Colin Walters <walters@verbum.org> - 0.1.11-2
- Update to 0.1.11
* Fri Apr 26 2024 Colin Walters <walters@verbum.org> - 0.1.10-2
- Release 0.1.10
* Mon Apr 08 2024 Colin Walters <walters@verbum.org> - 0.1.9-4
- Correct JIRA link
Resolves: #RHEL-30878
* Thu Mar 28 2024 Colin Walters <walters@verbum.org> - 0.1.9-3
- Backport rollback
Related: #RHEL-30466
* Wed Mar 27 2024 Colin Walters <walters@verbum.org> - 0.1.9-2
- https://github.com/containers/bootc/releases/tag/v0.1.9
Resolves: #RHEL-30466
* Tue Mar 19 2024 Colin Walters <walters@verbum.org> - 0.1.8-2
- https://github.com/containers/bootc/releases/tag/v0.1.8
* Wed Feb 14 2024 Colin Walters <walters@verbum.org> - 0.1.7-4
- https://github.com/containers/bootc/releases/tag/v0.1.7
* Tue Jan 23 2024 Colin Walters <walters@verbum.org> - 0.1.6-2
- https://github.com/containers/bootc/releases/tag/v0.1.6
* Fri Jan 12 2024 Joseph Marrero <jmarrero@redhat.com> - 0.1.5-1
- Update to https://github.com/containers/bootc/releases/tag/v0.1.5
* Thu Jan 11 2024 Colin Walters <walters@verbum.org> - 0.1.4-3
- Loosen composefs requirement until it makes it into c9s
* Mon Dec 11 2023 Colin Walters <walters@verbum.org> - 0.1.4-2
- Initial import from fedora
%autochangelog

17
gating.yaml Normal file
View File

@ -0,0 +1,17 @@
--- !Policy
product_versions:
- fedora-*
decision_contexts:
- bodhi_update_push_stable
- bodhi_update_push_testing
subject_type: koji_build
rules:
- !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional}
--- !Policy
product_versions:
- rhel-9
- rhel-10
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: osci.brew-build.tier0.functional}

91
plans/all.fmf Normal file
View File

@ -0,0 +1,91 @@
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
- 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
# Remove the "cp" line in next release
- cp provision-packit.sh bootc/hack && cp Containerfile.packit bootc/hack
- 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
/readonly-tests:
summary: Execute booted readonly/nondestructive tests
discover+:
how: fmf
test:
- /tmt/tests/test-01-readonly
/test-20-local-upgrade:
summary: Execute local upgrade tests
discover+:
how: fmf
test:
- /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/test-21-logically-bound-switch
/test-22-logically-bound-install:
summary: Execute logically bound images tests for switching images
discover+:
how: fmf
test:
- /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/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
View 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=$(jq -r --arg v "$TEST_OS" '.base[$v]' < os-image-map.json)
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

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (bootc-1.11.0.tar.zstd) = f3bc4ca8d99abe5154fbccf84694bd5aebdb819d90a83ad119aee7ae4469b2e4f5313e6ce65831c007d88ddabe144bc9757793d16963a9d52ff66912057049f0
SHA512 (bootc-1.11.0-vendor.tar.zstd) = 2198d4cf9e9e44e30f1f3e998e8d640afa5fa7d2b0904a6d1ea972ff637e2a55e37fbf2b2e18454736208cec6541b98c0bd685bc8fd959346aa2be1b4aaa1729