From edc3208c2e6f1abe27018e7dc308fc905fa221b9 Mon Sep 17 00:00:00 2001 From: fithwum Date: Thu, 10 Jul 2025 07:55:18 -0700 Subject: [PATCH] test --- .gitea/workflows/base-build.yml | 112 ++++++++----------- .gitea/workflows/build-rootfs-template.yml | 28 +++++ base-image-script/build-rootfs.sh | 20 ++++ base-image-script/debian-bookworm-pt1.sh | 37 ------ base-image-script/debian-build-pt2.sh | 26 ----- base-image-script/debian-build-pt3.sh | 36 ------ base-image-script/debian-bullseye-pt1.sh | 37 ------ base-image-script/debian-buster-pt1.sh | 37 ------ base-image-script/debian-docker-build-pt1.sh | 37 ------ base-image-script/debian-docker-build-pt2.sh | 37 ------ base-image-script/debian-trixie-pt1.sh | 37 ------ base-image-script/extract-rootfs.sh | 0 base-image-script/generate-build-info.sh | 0 base-image-script/generate-changelog.sh | 0 base-image-script/upload-rootfs.sh | 23 ++++ base-image-script/validate-archives.sh | 0 base-image-script/validate-rootfs.sh | 11 ++ 17 files changed, 126 insertions(+), 352 deletions(-) create mode 100644 .gitea/workflows/build-rootfs-template.yml create mode 100644 base-image-script/build-rootfs.sh delete mode 100644 base-image-script/debian-bookworm-pt1.sh delete mode 100644 base-image-script/debian-build-pt2.sh delete mode 100644 base-image-script/debian-build-pt3.sh delete mode 100644 base-image-script/debian-bullseye-pt1.sh delete mode 100644 base-image-script/debian-buster-pt1.sh delete mode 100644 base-image-script/debian-docker-build-pt1.sh delete mode 100644 base-image-script/debian-docker-build-pt2.sh delete mode 100644 base-image-script/debian-trixie-pt1.sh create mode 100644 base-image-script/extract-rootfs.sh create mode 100644 base-image-script/generate-build-info.sh create mode 100644 base-image-script/generate-changelog.sh create mode 100644 base-image-script/upload-rootfs.sh create mode 100644 base-image-script/validate-archives.sh create mode 100644 base-image-script/validate-rootfs.sh diff --git a/.gitea/workflows/base-build.yml b/.gitea/workflows/base-build.yml index bdcbb71..d4ccc5c 100644 --- a/.gitea/workflows/base-build.yml +++ b/.gitea/workflows/base-build.yml @@ -16,6 +16,9 @@ env: REPO_URL: ${{ secrets.REPO_URL }} GIT_USERNAME: ${{ secrets.GIT_USERNAME }} GIT_EMAIL: ${{ secrets.GIT_EMAIL }} + GIT_PASSWORD: ${{ secrets.GIT_PASSWORD }} + GIT_TOKEN: ${{ secrets.GIT_TOKEN }} + GIT_CREDENTIAL: ${{ secrets.GIT_TOKEN || secrets.GIT_PASSWORD }} DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} VERSIONS: "buster bullseye bookworm trixie" @@ -23,10 +26,15 @@ env: OUTPUT_DIR: ./output jobs: - build-and-push-rootfs-archives: + build-rootfs-per-version: runs-on: vm-docker-build2 + strategy: + matrix: + version: ${{ fromJson(env.VERSIONS_JSON) }} outputs: - archives_changed: ${{ steps.commit_archives.outputs.archives_changed }} + archive_changed: ${{ steps.check_changed.outputs.archive_changed }} + env: + VERSION: ${{ matrix.version }} steps: - name: Checkout source uses: actions/checkout@v3 @@ -34,89 +42,57 @@ jobs: - name: Create output directory run: mkdir -p ./output - - name: Build all Debian rootfs versions into volumes and extract + - name: Build Debian ${{ env.VERSION }} rootfs run: | - versions=($VERSIONS) - for version in "${versions[@]}"; do - echo "[INFO] Building $version..." - volume_name="build_output_$version" - docker volume create "$volume_name" + echo "[INFO] Building $VERSION..." + volume_name="build_output_$VERSION" + docker volume create "$volume_name" - docker build --build-arg VERSION=$version -t fithwum/debian-$version-base . + docker build --build-arg VERSION=$VERSION -t fithwum/debian-$VERSION-base . - docker run --rm --privileged \ - -v "$volume_name:/output" \ - -e VERSION="$version" \ - fithwum/debian-$version-base \ - bash -c "/scripts/bootstrap-rootfs.sh \"$version\"" + docker run --rm --privileged \ + -v "$volume_name:/output" \ + -e VERSION="$VERSION" \ + fithwum/debian-$VERSION-base \ + bash -c "/scripts/bootstrap-rootfs.sh \"$VERSION\"" - # Extract the output file from the volume - container_id=$(docker create -v "$volume_name:/output" debian) - mkdir -p ./output/$version - docker cp "$container_id:/output/$version/debian-$version.tar.bz2" ./output/$version/ - docker rm "$container_id" - done - - - name: Validate that archives exist for each version - run: | - IFS=' ' read -r -a versions <<< "$VERSIONS" - for version in "${versions[@]}"; do - path="./output/$version/debian-$version.tar.bz2" - if [[ ! -f "$path" ]]; then - echo "[ERROR] Missing archive: $path" - exit 1 - else - echo "[OK] Found: $path" - fi - done + container_id=$(docker create -v "$volume_name:/output" debian) + mkdir -p ./output/$VERSION + docker cp "$container_id:/output/$VERSION/debian-$VERSION.tar.bz2" ./output/$VERSION/ + docker rm "$container_id" - name: Clone upload repo run: | GIT_CREDENTIAL="${{ secrets.GIT_TOKEN || secrets.GIT_PASSWORD }}" git clone --depth=1 "https://${{ env.GIT_USERNAME }}:${GIT_CREDENTIAL}@gitea.fithwum.tech/fithwum/debian-base.git" upload-repo - - name: Clean old archives in upload-repo - run: rm -rfv upload-repo/*/*.tar.bz2 - - - name: Copy new archives to upload-repo + - name: Check if archive changed + id: check_changed run: | - for filepath in ./output/*/debian-*.tar.bz2; do - version_dir=$(basename "$(dirname "$filepath")") - mkdir -p "upload-repo/$version_dir" - cp "$filepath" "upload-repo/$version_dir/" - done + mkdir -p upload-repo/${VERSION} + new="./output/${VERSION}/debian-${VERSION}.tar.bz2" + old="upload-repo/${VERSION}/debian-${VERSION}.tar.bz2" + cp "$new" "$old" + + checksum=$(sha256sum "$new" | awk '{print $1}') + echo "$checksum ${VERSION}/debian-${VERSION}.tar.bz2" >> upload-repo/sha256sums.txt - - name: Calculate and store sha256sums in upload-repo - run: | cd upload-repo - rm -f sha256sums.txt - for tarball in */debian-*.tar.bz2; do - echo "[INFO] Processing: $tarball" - checksum=$(sha256sum "$tarball" | awk '{print $1}') - echo "$checksum $tarball" >> sha256sums.txt - done - echo "[INFO] SHA256 contents:" - cat sha256sums.txt + git config user.name "${{ env.GIT_USERNAME }}" + git config user.email "${{ env.GIT_EMAIL }}" + git add ${VERSION}/debian-${VERSION}.tar.bz2 sha256sums.txt || true - - name: Commit and push files if changed - id: commit_archives - run: | - cd upload-repo - git config --global user.name "${{ env.GIT_USERNAME }}" - git config --global user.email "${{ env.GIT_EMAIL }}" - - if git status --porcelain | grep .; then - git add **/*.tar.bz2 sha256sums.txt || true - git commit -m "Update base images and checksum on $(date -u +'%Y-%m-%dT%H:%M:%SZ') [skip ci]" - git push - echo "archives_changed=true" >> $GITHUB_OUTPUT - else + if git diff --cached --quiet; then echo "[INFO] No changes to commit." - echo "archives_changed=false" >> $GITHUB_OUTPUT + echo "archive_changed=false" >> $GITHUB_OUTPUT + else + git commit -m "Update rootfs for $VERSION" + git push + echo "archive_changed=true" >> $GITHUB_OUTPUT fi build-and-push-docker-images: - needs: build-and-push-rootfs-archives + needs: build-rootfs-per-version if: always() runs-on: doc-docker-build steps: @@ -189,7 +165,7 @@ jobs: done generate-changelogs: - needs: build-and-push-rootfs-archives + needs: build-rootfs-per-version runs-on: doc-docker-build steps: - name: Checkout source diff --git a/.gitea/workflows/build-rootfs-template.yml b/.gitea/workflows/build-rootfs-template.yml new file mode 100644 index 0000000..e50c4b1 --- /dev/null +++ b/.gitea/workflows/build-rootfs-template.yml @@ -0,0 +1,28 @@ +name: Build RootFS for ${{ inputs.version }} + +on: + workflow_call: + inputs: + version: + required: true + type: string + +jobs: + build: + runs-on: vm-docker-build2 + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set up scripts + run: chmod +x scripts/*.sh + + - name: Build rootfs + run: ./scripts/build-rootfs.sh "${{ inputs.version }}" + + - name: Validate rootfs + run: ./scripts/validate-rootfs.sh "${{ inputs.version }}" + + - name: Upload to upload-repo + run: | + ./scripts/upload-rootfs.sh "${{ inputs.version }}" "${{ secrets.GIT_USERNAME }}" "${{ secrets.GIT_PASSWORD }}" diff --git a/base-image-script/build-rootfs.sh b/base-image-script/build-rootfs.sh new file mode 100644 index 0000000..1eb5619 --- /dev/null +++ b/base-image-script/build-rootfs.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -euo pipefail + +VERSION="$1" +VOLUME="build_output_$VERSION" + +echo "[INFO] Building rootfs for $VERSION" +docker volume create "$VOLUME" + +docker build --build-arg VERSION="$VERSION" -t "fithwum/debian-$VERSION-base" . + +docker run --rm --privileged -v "$VOLUME:/output" \ + -e VERSION="$VERSION" \ + "fithwum/debian-$VERSION-base" \ + bash -c "/scripts/bootstrap-rootfs.sh \"$VERSION\"" + +container_id=$(docker create -v "$VOLUME:/output" debian) +mkdir -p "output/$VERSION" +docker cp "$container_id:/output/$VERSION/debian-$VERSION.tar.bz2" "output/$VERSION/" +docker rm "$container_id" diff --git a/base-image-script/debian-bookworm-pt1.sh b/base-image-script/debian-bookworm-pt1.sh deleted file mode 100644 index 9db09aa..0000000 --- a/base-image-script/debian-bookworm-pt1.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Copyright (c) 2025 fithwum -# All rights reserved -set -e -set -o pipefail - -DEBIAN_RELEASE="bookworm" -ROOTFS_DIR="debian-$DEBIAN_RELEASE" -SCRIPTS_DIR="base-image-script" -PT2_SCRIPT="debian-build-pt2.sh" -PT3_SCRIPT="debian-build-pt3.sh" - -echo "[INFO] Preparing environment..." -apt-get update -y -apt-get upgrade -y -apt-get install -y --no-install-recommends debootstrap bash curl wget dirmngr bzip2 - -for SCRIPT in $PT2_SCRIPT $PT3_SCRIPT; do - if [ ! -f "./$SCRIPTS_DIR/$SCRIPT" ]; then - echo "[ERROR] Missing script: $SCRIPTS_DIR/$SCRIPT" - exit 1 - fi -done - -echo "[INFO] Bootstrapping Debian $DEBIAN_RELEASE rootfs..." -debootstrap --verbose --variant=minbase --components=main,contrib,non-free --include=apt,ca-certificates --arch=amd64 "$DEBIAN_RELEASE" "$ROOTFS_DIR" http://deb.debian.org/debian/ - -for dir in dev dev/pts proc sys; do - mount --bind "/$dir" "$ROOTFS_DIR/$dir" -done - -cp "./$SCRIPTS_DIR/$PT2_SCRIPT" "$ROOTFS_DIR/root/$PT2_SCRIPT" -chmod +x "$ROOTFS_DIR/root/$PT2_SCRIPT" - -chroot "$ROOTFS_DIR" /root/$PT2_SCRIPT - -bash "./$SCRIPTS_DIR/$PT3_SCRIPT" "$ROOTFS_DIR" \ No newline at end of file diff --git a/base-image-script/debian-build-pt2.sh b/base-image-script/debian-build-pt2.sh deleted file mode 100644 index 5d9a354..0000000 --- a/base-image-script/debian-build-pt2.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright (c) 2025 fithwum -# All rights reserved -echo "[CHROOT] Configuring Debian system..." -echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/10-assume_yes - -apt-get update -apt-get upgrade - -apt-get install --no-install-recommends software-properties-common bash wget curl nano locales - -echo "[CHROOT] Generating locales..." -echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen -locale-gen -update-locale LANG=en_US.UTF-8 - -echo "[CHROOT] Removing unnecessary packages..." -apt-get remove --purge --allow-remove-essential pinentry-curses whiptail kmod iptables iproute2 dmidecode || true - -echo "[CHROOT] Cleaning up..." -apt-get clean -apt-get install -f -find /var/lib/apt/lists/ -type f -delete - -echo "[CHROOT] Done. Type 'exit' to return." -exit \ No newline at end of file diff --git a/base-image-script/debian-build-pt3.sh b/base-image-script/debian-build-pt3.sh deleted file mode 100644 index adbad76..0000000 --- a/base-image-script/debian-build-pt3.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/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" diff --git a/base-image-script/debian-bullseye-pt1.sh b/base-image-script/debian-bullseye-pt1.sh deleted file mode 100644 index 248b149..0000000 --- a/base-image-script/debian-bullseye-pt1.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Copyright (c) 2025 fithwum -# All rights reserved -set -e -set -o pipefail - -DEBIAN_RELEASE="bullseye" -ROOTFS_DIR="debian-$DEBIAN_RELEASE" -SCRIPTS_DIR="base-image-script" -PT2_SCRIPT="debian-build-pt2.sh" -PT3_SCRIPT="debian-build-pt3.sh" - -echo "[INFO] Preparing environment..." -apt-get update -y -apt-get upgrade -y -apt-get install -y --no-install-recommends debootstrap bash curl wget dirmngr bzip2 - -for SCRIPT in $PT2_SCRIPT $PT3_SCRIPT; do - if [ ! -f "./$SCRIPTS_DIR/$SCRIPT" ]; then - echo "[ERROR] Missing script: $SCRIPTS_DIR/$SCRIPT" - exit 1 - fi -done - -echo "[INFO] Bootstrapping Debian $DEBIAN_RELEASE rootfs..." -debootstrap --verbose --variant=minbase --components=main,contrib,non-free --include=apt,ca-certificates --arch=amd64 "$DEBIAN_RELEASE" "$ROOTFS_DIR" http://deb.debian.org/debian/ - -for dir in dev dev/pts proc sys; do - mount --bind "/$dir" "$ROOTFS_DIR/$dir" -done - -cp "./$SCRIPTS_DIR/$PT2_SCRIPT" "$ROOTFS_DIR/root/$PT2_SCRIPT" -chmod +x "$ROOTFS_DIR/root/$PT2_SCRIPT" - -chroot "$ROOTFS_DIR" /root/$PT2_SCRIPT - -bash "./$SCRIPTS_DIR/$PT3_SCRIPT" "$ROOTFS_DIR" \ No newline at end of file diff --git a/base-image-script/debian-buster-pt1.sh b/base-image-script/debian-buster-pt1.sh deleted file mode 100644 index b3fb763..0000000 --- a/base-image-script/debian-buster-pt1.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Copyright (c) 2025 fithwum -# All rights reserved -set -e -set -o pipefail - -DEBIAN_RELEASE="buster" -ROOTFS_DIR="debian-$DEBIAN_RELEASE" -SCRIPTS_DIR="base-image-script" -PT2_SCRIPT="debian-build-pt2.sh" -PT3_SCRIPT="debian-build-pt3.sh" - -echo "[INFO] Preparing environment..." -apt-get update -y -apt-get upgrade -y -apt-get install -y --no-install-recommends debootstrap bash curl wget dirmngr bzip2 - -for SCRIPT in $PT2_SCRIPT $PT3_SCRIPT; do - if [ ! -f "./$SCRIPTS_DIR/$SCRIPT" ]; then - echo "[ERROR] Missing script: $SCRIPTS_DIR/$SCRIPT" - exit 1 - fi -done - -echo "[INFO] Bootstrapping Debian $DEBIAN_RELEASE rootfs..." -debootstrap --verbose --variant=minbase --components=main,contrib,non-free --include=apt,ca-certificates --arch=amd64 "$DEBIAN_RELEASE" "$ROOTFS_DIR" http://deb.debian.org/debian/ - -for dir in dev dev/pts proc sys; do - mount --bind "/$dir" "$ROOTFS_DIR/$dir" -done - -cp "./$SCRIPTS_DIR/$PT2_SCRIPT" "$ROOTFS_DIR/root/$PT2_SCRIPT" -chmod +x "$ROOTFS_DIR/root/$PT2_SCRIPT" - -chroot "$ROOTFS_DIR" /root/$PT2_SCRIPT - -bash "./$SCRIPTS_DIR/$PT3_SCRIPT" "$ROOTFS_DIR" \ No newline at end of file diff --git a/base-image-script/debian-docker-build-pt1.sh b/base-image-script/debian-docker-build-pt1.sh deleted file mode 100644 index 55f4c4a..0000000 --- a/base-image-script/debian-docker-build-pt1.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Copyright (c) 2025 fithwum -# All rights reserved -set -e -set -o pipefail - -DEBIAN_RELEASE="docker-build" -ROOTFS_DIR="debian-$DEBIAN_RELEASE" -SCRIPTS_DIR="base-image-script" -PT2_SCRIPT="debian-$DEBIAN_RELEASE-pt2.sh" -PT3_SCRIPT="debian-build-pt3.sh" - -echo "[INFO] Preparing environment..." -apt-get update -y -apt-get upgrade -y -apt-get install -y --no-install-recommends debootstrap bash curl wget dirmngr bzip2 - -for SCRIPT in $PT2_SCRIPT $PT3_SCRIPT; do - if [ ! -f "./$SCRIPTS_DIR/$SCRIPT" ]; then - echo "[ERROR] Missing script: $SCRIPTS_DIR/$SCRIPT" - exit 1 - fi -done - -echo "[INFO] Bootstrapping Debian $DEBIAN_RELEASE rootfs..." -debootstrap --variant=minbase --components=main,contrib,non-free --include=apt,ca-certificates --arch=amd64 bookworm "$ROOTFS_DIR" http://deb.debian.org/debian/ - -for dir in dev dev/pts proc sys; do - mount --bind "/$dir" "$ROOTFS_DIR/$dir" -done - -cp "./$SCRIPTS_DIR/$PT2_SCRIPT" "$ROOTFS_DIR/root/$PT2_SCRIPT" -chmod +x "$ROOTFS_DIR/root/$PT2_SCRIPT" - -chroot "$ROOTFS_DIR" /root/$PT2_SCRIPT - -bash "./$SCRIPTS_DIR/$PT3_SCRIPT" "$ROOTFS_DIR" \ No newline at end of file diff --git a/base-image-script/debian-docker-build-pt2.sh b/base-image-script/debian-docker-build-pt2.sh deleted file mode 100644 index 02d70c0..0000000 --- a/base-image-script/debian-docker-build-pt2.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Copyright (c) 2025 fithwum -# All rights reserved -echo "[CHROOT] Configuring Debian system..." -echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/10-assume_yes - -apt-get update -apt-get upgrade - -echo "[CHROOT] Installing Node.js..." -curl -fsSL https://deb.nodesource.com/setup_20.x | bash - -apt-get install --no-install-recommends nodejs - -echo "[CHROOT] Installing Docker..." -apt-get install ca-certificates curl gnupg lsb-release -mkdir -p /etc/apt/keyrings -curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg -echo \ - "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ - $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null -apt-get update - -apt-get install --no-install-recommends docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -apt-get install --no-install-recommends software-properties-common bash wget curl nano python3 python3-pip python3-venv locales - -dpkg -l | grep python3-cryptography || echo "[OK] Not installed" - -echo "[CHROOT] Removing unnecessary packages..." -apt-get remove --purge --allow-remove-essential pinentry-curses whiptail dmidecode || true - -echo "[CHROOT] Cleaning up..." -apt-get clean -apt-get install -f -find /var/lib/apt/lists/ -type f -delete - -echo "[CHROOT] Done. Type 'exit' to return." -exit diff --git a/base-image-script/debian-trixie-pt1.sh b/base-image-script/debian-trixie-pt1.sh deleted file mode 100644 index 03620e5..0000000 --- a/base-image-script/debian-trixie-pt1.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash -# Copyright (c) 2025 fithwum -# All rights reserved -set -e -set -o pipefail - -DEBIAN_RELEASE="trixie" -ROOTFS_DIR="debian-$DEBIAN_RELEASE" -SCRIPTS_DIR="base-image-script" -PT2_SCRIPT="debian-build-pt2.sh" -PT3_SCRIPT="debian-build-pt3.sh" - -echo "[INFO] Preparing environment..." -apt-get update -y -apt-get upgrade -y -apt-get install -y --no-install-recommends debootstrap bash curl wget dirmngr bzip2 - -for SCRIPT in $PT2_SCRIPT $PT3_SCRIPT; do - if [ ! -f "./$SCRIPTS_DIR/$SCRIPT" ]; then - echo "[ERROR] Missing script: $SCRIPTS_DIR/$SCRIPT" - exit 1 - fi -done - -echo "[INFO] Bootstrapping Debian $DEBIAN_RELEASE rootfs..." -debootstrap --verbose --variant=minbase --components=main,contrib,non-free --include=apt,ca-certificates --arch=amd64 "$DEBIAN_RELEASE" "$ROOTFS_DIR" http://deb.debian.org/debian/ - -for dir in dev dev/pts proc sys; do - mount --bind "/$dir" "$ROOTFS_DIR/$dir" -done - -cp "./$SCRIPTS_DIR/$PT2_SCRIPT" "$ROOTFS_DIR/root/$PT2_SCRIPT" -chmod +x "$ROOTFS_DIR/root/$PT2_SCRIPT" - -chroot "$ROOTFS_DIR" /root/$PT2_SCRIPT - -bash "./$SCRIPTS_DIR/$PT3_SCRIPT" "$ROOTFS_DIR" \ No newline at end of file diff --git a/base-image-script/extract-rootfs.sh b/base-image-script/extract-rootfs.sh new file mode 100644 index 0000000..e69de29 diff --git a/base-image-script/generate-build-info.sh b/base-image-script/generate-build-info.sh new file mode 100644 index 0000000..e69de29 diff --git a/base-image-script/generate-changelog.sh b/base-image-script/generate-changelog.sh new file mode 100644 index 0000000..e69de29 diff --git a/base-image-script/upload-rootfs.sh b/base-image-script/upload-rootfs.sh new file mode 100644 index 0000000..61fdaeb --- /dev/null +++ b/base-image-script/upload-rootfs.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -euo pipefail +VERSION="$1" + +REPO_URL="https://${GIT_USERNAME}:${GIT_PASSWORD}@gitea.fithwum.tech/fithwum/debian-base.git" +git clone --depth=1 "$REPO_URL" upload-repo + +rm -rfv "upload-repo/$VERSION/*.tar.bz2" +mkdir -p "upload-repo/$VERSION" +cp "output/$VERSION/debian-$VERSION.tar.bz2" "upload-repo/$VERSION/" + +cd upload-repo +sha256sum "$VERSION/debian-$VERSION.tar.bz2" > sha256sums.txt + +git config user.name "$GIT_USERNAME" +git config user.email "ci@gitea.fithwum.tech" +if git status --porcelain | grep .; then + git add "$VERSION/*.tar.bz2" sha256sums.txt + git commit -m "Update $VERSION archive" + git push +else + echo "[INFO] No changes to commit." +fi diff --git a/base-image-script/validate-archives.sh b/base-image-script/validate-archives.sh new file mode 100644 index 0000000..e69de29 diff --git a/base-image-script/validate-rootfs.sh b/base-image-script/validate-rootfs.sh new file mode 100644 index 0000000..e03749f --- /dev/null +++ b/base-image-script/validate-rootfs.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -euo pipefail +VERSION="$1" +archive="./output/$VERSION/debian-$VERSION.tar.bz2" + +if [[ ! -f "$archive" ]]; then + echo "[ERROR] Archive missing: $archive" + exit 1 +else + echo "[OK] Found archive: $archive" +fi