feat: update bluebuild to v1.8. switch type: rpm-ostree to new type: dnf, add new native groupinstall support, and cleanup docker repo

- Rename and update obsolete docker-ce_f41.repo file to f42 and update common-modules.yml to reference the new docker-ce.repo.
- Remove old groupinstall scripts.
- Switch rpm-ostree plugin to new dnf plugin for better performance and features
- Add groupinstall functionality to recipe via new dnf plugin
This commit is contained in:
badblocks 2025-06-13 15:17:38 -07:00
parent 6386f24d12
commit d6895209da
No known key found for this signature in database
5 changed files with 67 additions and 115 deletions

View file

@ -26,7 +26,7 @@ jobs:
steps:
# the build is fully handled by the reusable github action
- name: Build Custom Image
uses: blue-build/github-action@v1.7
uses: blue-build/github-action@v1.8
with:
recipe: ${{ matrix.recipe }}
cosign_private_key: ${{ secrets.SIGNING_SECRET }}

View file

@ -1,62 +1,62 @@
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/fedora/41/$basearch/stable
baseurl=https://download.docker.com/linux/fedora/42/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://download.docker.com/linux/fedora/41/debug-$basearch/stable
baseurl=https://download.docker.com/linux/fedora/42/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://download.docker.com/linux/fedora/41/source/stable
baseurl=https://download.docker.com/linux/fedora/42/source/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://download.docker.com/linux/fedora/41/$basearch/test
baseurl=https://download.docker.com/linux/fedora/42/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://download.docker.com/linux/fedora/41/debug-$basearch/test
baseurl=https://download.docker.com/linux/fedora/42/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://download.docker.com/linux/fedora/41/source/test
baseurl=https://download.docker.com/linux/fedora/42/source/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://download.docker.com/linux/fedora/41/$basearch/nightly
baseurl=https://download.docker.com/linux/fedora/42/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://download.docker.com/linux/fedora/41/debug-$basearch/nightly
baseurl=https://download.docker.com/linux/fedora/42/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg
[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://download.docker.com/linux/fedora/41/source/nightly
baseurl=https://download.docker.com/linux/fedora/42/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/fedora/gpg

View file

@ -1,6 +0,0 @@
#!/bin/sh
set -oex pipefail
set +u
dnf groupinstall "C Development Tools and Libraries" "Development Tools"

View file

@ -1,45 +0,0 @@
#!/bin/bash
set -oex pipefail
set +u
# Find the dnf groupinstall lines and extract quoted strings
VALUE="$(grep '^dnf groupinstall' /tmp/files/scripts/groupinstall.sh | grep -o '"[^"]*"' | tr '\n' ' ')"
echo "Extracted VALUE: $VALUE"
if [ -z "$VALUE" ]; then
echo "No groups found in build.sh"
exit 0
fi
# Initialize an empty array
declare -a GROUP_ARRAY
# Use read with a custom delimiter to split the input string
while IFS='"' read -ra parts; do
for part in "${parts[@]}"; do
# Trim leading and trailing spaces and check if the part is not empty
trimmed=$(echo "$part" | xargs)
if [[ -n "$trimmed" ]]; then
GROUP_ARRAY+=("$trimmed")
fi
done
done <<< "$VALUE"
echo "Raw Array without double-quotes: ${GROUP_ARRAY[*]}"
IS_DNF5=$(dnf --version | { grep -sc dnf5 || test $? = 1; })
echo "IS_DNF5: $IS_DNF5 (dnf4 = 0, else dnf5)"
for GROUP_E in "${GROUP_ARRAY[@]}"; do
echo "Getting pkgs for group: $GROUP_E"
if [ "$IS_DNF5" -ne 0 ]; then
#dnf5
OUTPUT="$OUTPUT $(dnf group info "$GROUP_E" 2>&1 | grep -E "packages|^[[:space:]]*:" | cut -d: -f2 | tr -s ' ' | tr -d '\n' | sed 's/^ //; s/ $//')"
else
#dnf4
OUTPUT="$OUTPUT $(dnf group info "$GROUP_E" 2>&1 | grep -v : | tr -d '\n' | tr -s ' ' | cut -c2-)"
fi
done
sed -i "s/^dnf groupinstall.*/rpm-ostree install $OUTPUT}/" /tmp/files/scripts/groupinstall.sh

View file

@ -1,10 +1,6 @@
modules:
#- type: script
# scripts:
# - prepare_groupinstall.sh
- type: script
scripts:
#- groupinstall.sh
- download_install_rpms.sh
- type: files
files:
@ -14,56 +10,63 @@ modules:
files:
- source: system/etc/modprobe.d/
destination: /etc/modprobe.d/
- type: rpm-ostree
- type: dnf
repos:
- https://packages.microsoft.com/yumrepos/vscode/config.repo
- docker-ce_f41.repo #manually use 41 until docker repo is ready with 42
keys:
- https://packages.microsoft.com/keys/microsoft.asc
- https://download.docker.com/linux/fedora/gpg
files:
- https://packages.microsoft.com/yumrepos/vscode/config.repo
- docker-ce.repo
keys:
- https://packages.microsoft.com/keys/microsoft.asc
- https://download.docker.com/linux/fedora/gpg
group-install:
with-optional: true
packages:
- development-tools
- c-development
install:
- vlc
- usbguard
- zsh
- libvirt
- virt-manager
- autofs
- gstreamer1-plugins-ugly-free
- gstreamer1-plugins-bad-free
- gstreamer1-plugins-bad-free-extras
- gstreamer1-plugins-good
- gstreamer1-plugins-good-extras
- gstreamer1-plugins-base
- gstreamer1-plugins-base-tools
- wireguard-tools
- trash-cli
- git
- git-credential-libsecret
- gtk-murrine-engine
- firewall-config
- alsa-tools
- libappstream-glib
- htop
- glances
- ansible
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
- cockpit
- cockpit-composer
- cockpit-files
- cockpit-machines
- cockpit-networkmanager
- cockpit-ostree
- cockpit-podman
- cockpit-selinux
- cockpit-sosreport
- cockpit-storaged
- gnome-boxes
- bottles
- code
packages:
- vlc
- usbguard
- zsh
- libvirt
- virt-manager
- autofs
- gstreamer1-plugins-ugly-free
- gstreamer1-plugins-bad-free
- gstreamer1-plugins-bad-free-extras
- gstreamer1-plugins-good
- gstreamer1-plugins-good-extras
- gstreamer1-plugins-base
- gstreamer1-plugins-base-tools
- wireguard-tools
- trash-cli
- git
- git-credential-libsecret
- gtk-murrine-engine
- firewall-config
- alsa-tools
- libappstream-glib
- htop
- glances
- ansible
- docker-ce
- docker-ce-cli
- containerd.io
- docker-buildx-plugin
- docker-compose-plugin
- cockpit
- cockpit-composer
- cockpit-files
- cockpit-machines
- cockpit-networkmanager
- cockpit-ostree
- cockpit-podman
- cockpit-selinux
- cockpit-sosreport
- cockpit-storaged
- gnome-boxes
- bottles
- code
- type: fonts
fonts:
nerd-fonts:
@ -87,7 +90,7 @@ modules:
include:
- zz1-power-button-settings.gschema.override
- type: default-flatpaks
notify: true # Send notification after install/uninstall is finished
notify: true
system:
install:
- net.nokyan.Resources
@ -120,5 +123,5 @@ modules:
system:
enabled:
- docker.service
- type: signing # sets up the proper policy & signing files for signed images to work fully
- type: signing