From 578315dc8ba8e374d83f7ee16af1cfcdca66c2a5 Mon Sep 17 00:00:00 2001 From: qpismont Date: Tue, 14 Oct 2025 23:38:33 +0200 Subject: [PATCH] Add initial scripts and configuration for Fedora image build process - Create .gitignore to exclude output directory - Add Containerfile for building Fedora image with necessary configurations - Implement build-iso.sh for ISO generation - Implement build.sh for building the image - Implement push-image.sh for pushing the built image to Docker Hub --- .gitignore | 1 + Containerfile | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++ build-iso.sh | 29 +++++++++++++++++++++++++ build.sh | 10 +++++++++ push-image.sh | 13 +++++++++++ 5 files changed, 113 insertions(+) create mode 100644 .gitignore create mode 100644 Containerfile create mode 100755 build-iso.sh create mode 100755 build.sh create mode 100755 push-image.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b1960e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +output/ \ No newline at end of file diff --git a/Containerfile b/Containerfile new file mode 100644 index 0000000..d0c3a4f --- /dev/null +++ b/Containerfile @@ -0,0 +1,60 @@ +FROM registry.fedoraproject.org/fedora-bootc:42 + +#Langue FR par défaut +RUN echo "LANG=fr_FR.UTF-8" > /etc/locale.conf +RUN echo "KEYMAP=fr" > /etc/vconsole.conf +RUN ln -sf /usr/share/zoneinfo/Europe/Paris /etc/localtime + +#Ajout du dépot vscode +RUN rpm --import https://packages.microsoft.com/keys/microsoft.asc \ + && echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\nautorefresh=1\ntype=rpm-md\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" | tee /etc/yum.repos.d/vscode.repo > /dev/null + +#Install de gnome avec support hardware + Podman + Cups + Vulkan driver + Plymouth +RUN dnf install -y \ + @gnome-desktop \ + @hardware-support \ + @development-tools \ + code \ + glibc-langpack-fr \ + flatpak \ + buildah \ + podman \ + podman-docker \ + fuse-overlayfs \ + cups \ + dconf \ + cups-pdf \ + vulkan-loader \ + vulkan-tools \ + mesa-vulkan-drivers \ + plymouth \ + plymouth-system-theme \ + plymouth-plugin-label \ + plymouth-plugin-fade-throbber \ + podman-compose \ + && dnf remove -y gnome-software gnome-software-rpm-ostree || true \ + && dnf clean all \ + && rm -rf /var/cache/dnf + + +#Configuration des fenêtres gnome pour avoir les btns style windows +RUN mkdir -p /etc/dconf/db/local.d /etc/dconf/profile && \ + printf "[org/gnome/desktop/wm/preferences]\nbutton-layout=':minimize,maximize,close'\n" > /etc/dconf/db/local.d/02-window-buttons && \ + printf "user-db:user\nsystem-db:local\n" > /etc/dconf/profile/user && \ + dconf update 2>/dev/null || true + +# Configuration Plymouth (thème spinner par défaut) +RUN plymouth-set-default-theme spinner && \ + dracut -f + +# Configuration pour flatpak +RUN echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf + +# Ajout de flathub avec des apps par défaut +RUN flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo \ + && flatpak install -y --system flathub runtime/org.gnome.Platform/x86_64/49 \ + && flatpak install -y --system flathub io.github.kolunmi.Bazaar + +#Activation des services +RUN systemctl preset-all && \ + systemctl enable gdm.service NetworkManager.service bluetooth.service podman.socket cups.service \ No newline at end of file diff --git a/build-iso.sh b/build-iso.sh new file mode 100755 index 0000000..649ed72 --- /dev/null +++ b/build-iso.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -euo pipefail + +IMAGE_NAME="tintounn/my-fedora" +IMAGE_TAG="latest" +OUTPUT_DIR="output/" + +bash build.sh + +echo "[INFO] Génération ISO pour ${IMAGE_NAME}:${IMAGE_TAG}..." + +# Nettoyage ancien répertoire +sudo rm -rf "$OUTPUT_DIR" +mkdir -p "$OUTPUT_DIR" + +# Génération de l'ISO directement depuis le storage root +sudo podman run --rm -it \ + --privileged \ + --pull=newer \ + --security-opt label=type:unconfined_t \ + -v $(pwd)/output:/output \ + -v /var/lib/containers/storage:/var/lib/containers/storage \ + quay.io/centos-bootc/bootc-image-builder:latest \ + --type anaconda-iso \ + --local \ + --rootfs xfs \ + localhost/${IMAGE_NAME}:${IMAGE_TAG} + +echo "[SUCCÈS] ISO généré dans $OUTPUT_DIR" \ No newline at end of file diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..d407cd8 --- /dev/null +++ b/build.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -euo pipefail + +IMAGE_NAME="tintounn/my-fedora" +IMAGE_TAG="latest" +OUTPUT_DIR="output/" + +echo "[INFO] Build de l'image avec sudo..." +sudo buildah bud -t localhost/${IMAGE_NAME}:${IMAGE_TAG} . + diff --git a/push-image.sh b/push-image.sh new file mode 100755 index 0000000..135e55d --- /dev/null +++ b/push-image.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +set -euo pipefail + +IMAGE_NAME="tintounn/my-fedora" +IMAGE_TAG="latest" +OUTPUT_DIR="output/" + +bash build.sh + +echo "[INFO] Push de l'image ${IMAGE_NAME}:${IMAGE_TAG}" + +sudo buildah tag localhost/${IMAGE_NAME}:${IMAGE_TAG} docker.io/${IMAGE_NAME}:${IMAGE_TAG} +sudo buildah push docker.io/${IMAGE_NAME}:${IMAGE_TAG} \ No newline at end of file