From d6895209da4822917be598201d9cf547f169b8c1 Mon Sep 17 00:00:00 2001 From: badbl0cks <4161747+badbl0cks@users.noreply.github.com> Date: Fri, 13 Jun 2025 15:17:38 -0700 Subject: [PATCH] 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 --- .github/workflows/build.yml | 2 +- .../docker-ce_f41.repo => dnf/docker-ce.repo} | 18 +-- files/scripts/groupinstall.sh | 6 - files/scripts/prepare-groupinstall.sh | 45 ------- recipes/common-modules.yml | 111 +++++++++--------- 5 files changed, 67 insertions(+), 115 deletions(-) rename files/{rpm-ostree/docker-ce_f41.repo => dnf/docker-ce.repo} (68%) delete mode 100644 files/scripts/groupinstall.sh delete mode 100644 files/scripts/prepare-groupinstall.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fe8d510..cfca156 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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 }} diff --git a/files/rpm-ostree/docker-ce_f41.repo b/files/dnf/docker-ce.repo similarity index 68% rename from files/rpm-ostree/docker-ce_f41.repo rename to files/dnf/docker-ce.repo index 922bace..c7896cb 100644 --- a/files/rpm-ostree/docker-ce_f41.repo +++ b/files/dnf/docker-ce.repo @@ -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 diff --git a/files/scripts/groupinstall.sh b/files/scripts/groupinstall.sh deleted file mode 100644 index c2a6230..0000000 --- a/files/scripts/groupinstall.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -set -oex pipefail -set +u - -dnf groupinstall "C Development Tools and Libraries" "Development Tools" diff --git a/files/scripts/prepare-groupinstall.sh b/files/scripts/prepare-groupinstall.sh deleted file mode 100644 index 67442e0..0000000 --- a/files/scripts/prepare-groupinstall.sh +++ /dev/null @@ -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 diff --git a/recipes/common-modules.yml b/recipes/common-modules.yml index 41a4127..65631b6 100644 --- a/recipes/common-modules.yml +++ b/recipes/common-modules.yml @@ -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