pipeline { agent any environment { ROOTFS_JOB = "espos-rootfs-gnome" WORKDIR = "${WORKSPACE}/work" } stages { stage('Cleanup Previous Mounts') { steps { sh ''' sudo umount -R "$WORKDIR/rootfs" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/dev/pts" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/dev/shm" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/dev" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/proc" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/sys" 2>/dev/null || true sudo rm -rf "$WORKDIR" || true ''' } } stage("Checkout") { steps { checkout scm } } stage("Install dependencies") { steps { sh 'sudo apt install -y squashfs-tools xorriso grub-pc-bin grub-efi-amd64-bin grub-common grub2-common mtools dosfstools zstd pv tree file' } } 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 { always { sh ''' sudo umount -R "$WORKDIR/rootfs" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/dev/pts" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/dev/shm" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/dev" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/proc" 2>/dev/null || true sudo umount -lf "$WORKDIR/rootfs/sys" 2>/dev/null || true ''' } success { archiveArtifacts( artifacts: '*.iso', fingerprint: true ) } } }