From 72aef4ef3f75bd83be751732733dd9c789599879 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 16 Jul 2026 13:53:17 +0200 Subject: [PATCH] First Commit --- Jenkinsfile | 46 +++++++++++++++++++++ build-liveiso.sh | 101 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 Jenkinsfile create mode 100644 build-liveiso.sh diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..e0977e9 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,46 @@ +pipeline { + agent any + + environment { + ROOTFS_JOB = "espos-rootfs" + } + + stages { + stage('Clean') { + steps { + deleteDir() + } + } + stage("Checkout") { + steps { + checkout scm + } + } + stage('Download RootFS') { + steps { + copyArtifacts( + projectName: env.ROOTFS_JOB, + selector: lastSuccessful() + ) + } + } + + stage('Build ISO') { + steps { + sh ''' + chmod +x build-liveiso.sh + sudo ./build-liveiso.sh + ''' + } + } + } + + post { + success { + archiveArtifacts( + artifacts: '*.iso', + fingerprint: true + ) + } + } +} \ No newline at end of file diff --git a/build-liveiso.sh b/build-liveiso.sh new file mode 100644 index 0000000..8bf1206 --- /dev/null +++ b/build-liveiso.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash + +set -euo pipefail + +WORKDIR="$(pwd)/work" +ROOTFS="$WORKDIR/rootfs" +ISO="$WORKDIR/iso" + +rm -rf "$WORKDIR" + +mkdir -p "$ROOTFS" +mkdir -p "$ISO/live" + +echo "=== Extracting RootFS ===" + +tar --zstd -xf espos-openrc-rootfs.tar.zst -C "$ROOTFS" + +echo "=== Mounting pseudo filesystems ===" + +mount --bind /dev "$ROOTFS/dev" +mount --bind /proc "$ROOTFS/proc" +mount --bind /sys "$ROOTFS/sys" + +cleanup() { + umount -lf "$ROOTFS/dev" 2>/dev/null || true + umount -lf "$ROOTFS/proc" 2>/dev/null || true + umount -lf "$ROOTFS/sys" 2>/dev/null || true +} + +trap cleanup EXIT + +echo "=== Configuring Live User ===" + +chroot "$ROOTFS" bash <<'EOF' + +set -e + +apt update + +DEBIAN_FRONTEND=noninteractive apt install -y \ + sudo \ + live-boot \ + live-config + +if ! id liveuser >/dev/null 2>&1; then + useradd -m -s /bin/bash liveuser +fi + +passwd -d liveuser + +echo "liveuser ALL=(ALL) NOPASSWD:ALL" \ + > /etc/sudoers.d/liveuser + +chmod 440 /etc/sudoers.d/liveuser + +mkdir -p /etc/conf.d + +cat >/etc/conf.d/agetty.tty1 < "$ISO/boot/grub/grub.cfg" <