diff --git a/.gitea/workflows/base-build.yml b/.gitea/workflows/base-build.yml index 1c52cf2..3459a45 100644 --- a/.gitea/workflows/base-build.yml +++ b/.gitea/workflows/base-build.yml @@ -35,18 +35,26 @@ jobs: echo "[INFO] Building Debian $version rootfs..." docker build --build-arg VERSION=$version -t fithwum/debian-$version-base . + OUTPUT_DIR="$(pwd)/output" + mkdir -p "$OUTPUT_DIR" + docker run --rm --privileged \ - -v "$(pwd)":/output \ + -v "$OUTPUT_DIR:/output" \ fithwum/debian-$version-base \ bash base-image-script/debian-${version}_pt1.sh RAW_ARCHIVE="./debian-${version}.tar.bz2" - if [[ ! -f "$RAW_ARCHIVE" ]]; then - RAW_ARCHIVE="./output/debian-${version}.tar.bz2" - fi - FINAL_ARCHIVE="${version}/rootfs-${version}.tar.bz2" + if [[ ! -f "$RAW_ARCHIVE" ]]; then + mkdir -p "$(dirname "$FINAL_ARCHIVE")" + RAW_ARCHIVE="./output/debian-${version}.tar.bz2" + echo "[INFO] Moved archive to $FINAL_ARCHIVE" + else + echo "[ERROR] Archive for $version not found: $RAW_ARCHIVE" + exit 1 + fi + if [[ -f "$RAW_ARCHIVE" ]]; then mkdir -p "$(dirname "$FINAL_ARCHIVE")" mv "$RAW_ARCHIVE" "$FINAL_ARCHIVE" diff --git a/base-image-script/debian-build_pt3.sh b/base-image-script/debian-build_pt3.sh index 140896f..5fa7e6a 100644 --- a/base-image-script/debian-build_pt3.sh +++ b/base-image-script/debian-build_pt3.sh @@ -14,7 +14,10 @@ else fi fi -TARBALL="/output/${ROOTFS_DIR}.tar.bz2" +VERSION_NAME="${ROOTFS_DIR#debian-}" +TARBALL_NAME="rootfs-${VERSION_NAME}.tar.bz2" +TARBALL_PATH="/output/${VERSION_NAME}/${TARBALL_NAME}" +CHECKSUM_PATH="/output/${VERSION_NAME}/sha256sums.txt" echo "[INFO] Unmounting system directories (ignore errors)..." for dir in sys proc dev/pts dev; do @@ -22,15 +25,75 @@ for dir in sys proc dev/pts dev; do done echo "[INFO] Removing chroot script..." -rm -f "$ROOTFS_DIR/root/${ROOTFS_DIR}_pt2.sh" 2>/dev/null || true +rm -f "$ROOTFS_DIR/root/"*.sh 2>/dev/null || true echo "[INFO] Rootfs size:" du -sh "$ROOTFS_DIR" echo "[INFO] Creating compressed base image..." -tar -cjf "$TARBALL" -C "$ROOTFS_DIR" . +mkdir -p "$(dirname "$TARBALL_PATH")" +tar -cjf "$TARBALL_PATH" -C "$ROOTFS_DIR" . echo "[INFO] Image archive size:" -du -sh "$TARBALL" +du -sh "$TARBALL_PATH" -echo "[INFO] Tarball ready for CI to upload: $TARBALL" +echo "[INFO] Calculating SHA256 checksum..." +sha256sum "$TARBALL_PATH" > "$CHECKSUM_PATH" + +echo "[INFO] Tarball ready at: $TARBALL_PATH" +echo "[INFO] Checksum written to: $CHECKSUM_PATH" + + + + + + + + + + + + + + + + + + + +# #!/bin/bash +# # Copyright (c) 2025 fithwum +# # All rights reserved +# set -e + +# # Auto-detect a single debian-* directory if not passed +# if [ -n "$1" ]; then +# ROOTFS_DIR="$1" +# else +# ROOTFS_DIR=$(find . -maxdepth 1 -type d -name "debian-*" | sed 's|^\./||' | head -n 1) +# if [ -z "$ROOTFS_DIR" ]; then +# echo "[ERROR] No debian-* rootfs directory found!" +# exit 1 +# fi +# fi + +# TARBALL="/output/${ROOTFS_DIR}.tar.bz2" + +# echo "[INFO] Unmounting system directories (ignore errors)..." +# for dir in sys proc dev/pts dev; do +# umount -lf "$ROOTFS_DIR/$dir" 2>/dev/null || true +# done + +# echo "[INFO] Removing chroot script..." +# rm -f "$ROOTFS_DIR/root/${ROOTFS_DIR}_pt2.sh" 2>/dev/null || true + +# echo "[INFO] Rootfs size:" +# du -sh "$ROOTFS_DIR" + +# echo "[INFO] Creating compressed base image..." +# tar -cjf "$TARBALL" -C "$ROOTFS_DIR" . + +# echo "[INFO] Image archive size:" +# du -sh "$TARBALL" + +# echo "[INFO] Tarball ready for CI to upload: $TARBALL"