Compare commits
70 Commits
cc2c8e9b9c
...
build-bull
| Author | SHA1 | Date | |
|---|---|---|---|
| 9463ca76c3 | |||
| e000c85269 | |||
| 7e3597b7bc | |||
| 54c6375002 | |||
| d307bee23b | |||
| 86020b5750 | |||
| 9d0a4e7ada | |||
| fba3b54622 | |||
| 7b66200599 | |||
| c33bffaf6d | |||
| 2bf2cbcb92 | |||
| abf9748091 | |||
| 852f03f2f3 | |||
| 67840f8ed4 | |||
| 7af273f572 | |||
| af7bb06789 | |||
| b7ad91bae9 | |||
| 3dbdb645c9 | |||
| f163b52e4b | |||
| f1ff15f81e | |||
| 267197003e | |||
| 004fc06090 | |||
| 21ef18de59 | |||
| 5585ec731a | |||
| f8e04eb811 | |||
| b26116238a | |||
| 18ea1862ec | |||
| 8abcf741c4 | |||
| 28c478f83b | |||
| 018455465a | |||
| 7b700aa632 | |||
| 2452a415e2 | |||
| 0ff6ab43a7 | |||
| a0be634447 | |||
| 7a93177fb1 | |||
| 9299590c52 | |||
| 8fa98555e6 | |||
| 921199be90 | |||
| 624588148d | |||
| 4b3cd6e721 | |||
| 327a90f1a9 | |||
| 8fced494bd | |||
| e226169470 | |||
| 607fe096b6 | |||
| 5e558c12f6 | |||
| 23734a8025 | |||
| 025b5fe80a | |||
| 66c285d3e0 | |||
| cec91e730f | |||
| ef3297a752 | |||
| 8ab75f47b4 | |||
| 7a8d69f302 | |||
| cd4afc54b1 | |||
| ef77296f06 | |||
| 0bdb7c4295 | |||
| c0329741e9 | |||
| c78ae1ff4e | |||
| 745ceae5b1 | |||
| 5baa33d621 | |||
| 9944b30105 | |||
| 7212948d83 | |||
| 1f7902c688 | |||
| eca8cd6349 | |||
| a6166a6374 | |||
| ea288cd6eb | |||
| c779056609 | |||
| bf0d9b9119 | |||
| 17e7e3b076 | |||
| f395fdfb91 | |||
| 23b02a0fc3 |
@@ -35,104 +35,13 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
runner:
|
runner:
|
||||||
- vm-docker-build2
|
- vm-docker-build2
|
||||||
|
- vm-docker-build2
|
||||||
steps:
|
steps:
|
||||||
- name: Prune unused Docker images
|
- name: Prune unused Docker images
|
||||||
run: |
|
run: |
|
||||||
echo "[INFO] Pruning Docker images on ${{ matrix.runner }}..."
|
echo "[INFO] Pruning Docker images on ${{ matrix.runner }}..."
|
||||||
docker image prune -a -f || true
|
docker image prune -a -f || true
|
||||||
|
|
||||||
# build-and-push-rootfs-archives:
|
|
||||||
# runs-on: vm-docker-build2
|
|
||||||
# outputs:
|
|
||||||
# archives_changed: ${{ steps.commit_archives.outputs.archives_changed }}
|
|
||||||
# steps:
|
|
||||||
# - name: Checkout source
|
|
||||||
# uses: actions/checkout@v3
|
|
||||||
|
|
||||||
# - name: Create output directory
|
|
||||||
# run: mkdir -p ./output
|
|
||||||
|
|
||||||
# - name: Build all Debian rootfs versions into volumes and extract
|
|
||||||
# run: |
|
|
||||||
# versions=($VERSIONS)
|
|
||||||
# for version in "${versions[@]}"; do
|
|
||||||
# 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 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
|
|
||||||
|
|
||||||
# - 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
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# - 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
|
|
||||||
|
|
||||||
# - 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
|
|
||||||
# echo "[INFO] No changes to commit."
|
|
||||||
# echo "archives_changed=false" >> $GITHUB_OUTPUT
|
|
||||||
# fi
|
|
||||||
|
|
||||||
build-and-push-rootfs-archives:
|
build-and-push-rootfs-archives:
|
||||||
name: Build RootFS Archives (${{ matrix.version }})
|
name: Build RootFS Archives (${{ matrix.version }})
|
||||||
runs-on: vm-docker-build2
|
runs-on: vm-docker-build2
|
||||||
@@ -197,22 +106,24 @@ jobs:
|
|||||||
mkdir -p "upload-repo/$VERSION"
|
mkdir -p "upload-repo/$VERSION"
|
||||||
cp "./output/$VERSION/debian-$VERSION.tar.bz2" "upload-repo/$VERSION/"
|
cp "./output/$VERSION/debian-$VERSION.tar.bz2" "upload-repo/$VERSION/"
|
||||||
|
|
||||||
- name: Update sha256sums
|
- name: Update sha256sums (per-version)
|
||||||
run: |
|
run: |
|
||||||
cd upload-repo
|
cd upload-repo
|
||||||
VERSION=${{ matrix.version }}
|
VERSION=${{ matrix.version }}
|
||||||
TAR="../output/$VERSION/debian-$VERSION.tar.bz2"
|
TAR="../output/$VERSION/debian-$VERSION.tar.bz2"
|
||||||
|
SHA_FILE="$VERSION/sha256sums.txt"
|
||||||
|
|
||||||
# Remove old entry
|
mkdir -p "$VERSION"
|
||||||
sed -i "/debian-$VERSION.tar.bz2/d" sha256sums.txt 2>/dev/null || true
|
|
||||||
|
|
||||||
if [[ ! -f "$TAR" ]]; then
|
if [[ ! -f "$TAR" ]]; then
|
||||||
echo "[ERROR] Tarball not found at $TAR"
|
echo "[ERROR] Tarball not found at $TAR"
|
||||||
|
ls -lh "../output/$VERSION/"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add new sha256
|
# Calculate SHA256 and store in per-version file
|
||||||
sha256sum "$TAR" >> sha256sums.txt
|
sha256sum "$TAR" > "$SHA_FILE"
|
||||||
|
echo "[INFO] SHA256 for $VERSION stored in $SHA_FILE"
|
||||||
|
|
||||||
- name: Commit and push if changed (matrix-safe)
|
- name: Commit and push if changed (matrix-safe)
|
||||||
id: commit_archives
|
id: commit_archives
|
||||||
@@ -221,133 +132,42 @@ jobs:
|
|||||||
git config user.name "${{ env.GIT_USERNAME }}"
|
git config user.name "${{ env.GIT_USERNAME }}"
|
||||||
git config user.email "${{ env.GIT_EMAIL }}"
|
git config user.email "${{ env.GIT_EMAIL }}"
|
||||||
|
|
||||||
# Create temporary branch for this version
|
VERSION=${{ matrix.version }}
|
||||||
TEMP_BRANCH="tmp-update-${{ matrix.version }}-$(date -u +%s)"
|
TEMP_BRANCH="tmp-update-$VERSION-$(date -u +%s)"
|
||||||
|
|
||||||
|
# Create temporary branch
|
||||||
git checkout -b "$TEMP_BRANCH"
|
git checkout -b "$TEMP_BRANCH"
|
||||||
|
|
||||||
# Stage changes
|
# Stage only this version's files
|
||||||
git add **/*.tar.bz2 sha256sums.txt
|
git add "$VERSION/debian-$VERSION.tar.bz2" "$VERSION/sha256sums.txt"
|
||||||
|
|
||||||
|
# Check if anything changed
|
||||||
if git diff --cached --quiet; then
|
if git diff --cached --quiet; then
|
||||||
echo "[INFO] No changes to commit for ${{ matrix.version }}"
|
echo "[INFO] No changes to commit for $VERSION"
|
||||||
echo "archives_changed=false" >> $GITEA_OUTPUT
|
echo "archives_changed=false" >> $GITEA_OUTPUT
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
git commit -m "Update base image and checksum for ${{ matrix.version }} on $(date -u +'%Y-%m-%dT%H:%M:%SZ') [skip ci]"
|
git commit -m "Update base image and checksum for $VERSION on $(date -u +'%Y-%m-%dT%H:%M:%SZ') [skip ci]"
|
||||||
|
|
||||||
# Push temporary branch
|
# Push temp branch to remote
|
||||||
git push origin "$TEMP_BRANCH"
|
git push origin "$TEMP_BRANCH"
|
||||||
|
|
||||||
# Merge temp branch into main safely
|
# Switch back to main and rebase onto remote main
|
||||||
git checkout main
|
git checkout main
|
||||||
git fetch origin main
|
git fetch origin main
|
||||||
|
git rebase origin/main
|
||||||
|
|
||||||
|
# Merge temp branch
|
||||||
git merge --no-ff --no-edit "$TEMP_BRANCH"
|
git merge --no-ff --no-edit "$TEMP_BRANCH"
|
||||||
|
|
||||||
# Push main
|
# Push main safely
|
||||||
git push origin main
|
git push origin main
|
||||||
|
|
||||||
# Delete temporary branch on remote
|
# Delete temporary branch
|
||||||
git push origin --delete "$TEMP_BRANCH" || true
|
git push origin --delete "$TEMP_BRANCH" || true
|
||||||
echo "archives_changed=true" >> $GITEA_OUTPUT
|
echo "archives_changed=true" >> $GITEA_OUTPUT
|
||||||
|
|
||||||
# build-and-push-docker-images:
|
|
||||||
# needs:
|
|
||||||
# - docker-prune
|
|
||||||
# - build-and-push-rootfs-archives
|
|
||||||
# if: always()
|
|
||||||
# # if: needs.build-and-push-rootfs-archives.outputs.archives_changed == 'true'
|
|
||||||
# runs-on: vm-docker-build2
|
|
||||||
# steps:
|
|
||||||
# - name: Checkout source
|
|
||||||
# uses: actions/checkout@v3
|
|
||||||
|
|
||||||
# - name: Wait for archives to appear in upload repo
|
|
||||||
# run: |
|
|
||||||
# echo "[INFO] Waiting for archives to appear in upload-repo..."
|
|
||||||
|
|
||||||
# mkdir -p temp-check
|
|
||||||
# cd temp-check
|
|
||||||
|
|
||||||
# # Retry loop for cloning the upload-repo
|
|
||||||
# for i in {1..10}; do
|
|
||||||
# echo "[INFO] Attempt $i: Cloning upload-repo..."
|
|
||||||
# if git clone --depth=1 "https://${{ secrets.GIT_USERNAME }}:${{ secrets.GIT_TOKEN }}@gitea.fithwum.tech/fithwum/debian-base.git"; then
|
|
||||||
# break
|
|
||||||
# fi
|
|
||||||
# echo "[WARN] Clone failed. Retrying in 10 seconds..."
|
|
||||||
# sleep 10
|
|
||||||
# done
|
|
||||||
|
|
||||||
# if [ ! -d "debian-base" ]; then
|
|
||||||
# echo "[ERROR] Failed to clone upload-repo after retries."
|
|
||||||
# exit 1
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# cd debian-base
|
|
||||||
|
|
||||||
# # Wait for all versions to show up
|
|
||||||
# missing_versions=()
|
|
||||||
# for version in $VERSIONS; do
|
|
||||||
# found=0
|
|
||||||
# for i in {1..30}; do
|
|
||||||
# if [[ -f "$version/debian-$version.tar.bz2" ]]; then
|
|
||||||
# found=1
|
|
||||||
# break
|
|
||||||
# else
|
|
||||||
# echo "[WAIT] $version not ready yet, sleeping 10s..."
|
|
||||||
# sleep 10
|
|
||||||
# fi
|
|
||||||
# done
|
|
||||||
|
|
||||||
# if [[ $found -eq 0 ]]; then
|
|
||||||
# missing_versions+=("$version")
|
|
||||||
# fi
|
|
||||||
# done
|
|
||||||
|
|
||||||
# if [[ ${#missing_versions[@]} -gt 0 ]]; then
|
|
||||||
# echo "[ERROR] Missing archives for: ${missing_versions[*]}"
|
|
||||||
# exit 1
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# - name: Generate Dockerfiles per version (if missing)
|
|
||||||
# run: |
|
|
||||||
# for version in $VERSIONS; do
|
|
||||||
# mkdir -p "$version"
|
|
||||||
# DOCKERFILE_PATH="$version/Dockerfile"
|
|
||||||
|
|
||||||
# if [[ -f "$DOCKERFILE_PATH" ]]; then
|
|
||||||
# echo "[INFO] Skipping $DOCKERFILE_PATH (already exists)"
|
|
||||||
# continue
|
|
||||||
# fi
|
|
||||||
|
|
||||||
# printf '%s\n' \
|
|
||||||
# "FROM scratch" \
|
|
||||||
# "LABEL maintainer=\"fithwum\"" \
|
|
||||||
# "ADD debian-$version.tar.bz2 /" \
|
|
||||||
# "CMD [\"/bin/bash\"]" > "$DOCKERFILE_PATH"
|
|
||||||
|
|
||||||
# echo "[INFO] Created $DOCKERFILE_PATH"
|
|
||||||
# done
|
|
||||||
|
|
||||||
# - name: Set up Docker Buildx
|
|
||||||
# uses: docker/setup-buildx-action@v3
|
|
||||||
|
|
||||||
# - name: Log in to Gitea Registry
|
|
||||||
# run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login gitea.fithwum.tech -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
|
|
||||||
|
|
||||||
# - name: Build and push Docker images
|
|
||||||
# run: |
|
|
||||||
# IMAGE_REGISTRY=gitea.fithwum.tech
|
|
||||||
# IMAGE_ORG=fithwum
|
|
||||||
# IMAGE_REPO=debian-base
|
|
||||||
|
|
||||||
# for TAG in $VERSIONS; do
|
|
||||||
# FULL_IMAGE="${IMAGE_REGISTRY}/${IMAGE_ORG}/${IMAGE_REPO}:${TAG}"
|
|
||||||
# echo "[INFO] Building and pushing $FULL_IMAGE"
|
|
||||||
# docker buildx build --platform linux/amd64 --push -t "$FULL_IMAGE" "./$TAG"
|
|
||||||
# done
|
|
||||||
|
|
||||||
build-and-push-docker-images:
|
build-and-push-docker-images:
|
||||||
name: Build & Push Docker Images (${{ matrix.version }})
|
name: Build & Push Docker Images (${{ matrix.version }})
|
||||||
needs:
|
needs:
|
||||||
@@ -364,12 +184,22 @@ jobs:
|
|||||||
- name: Checkout source
|
- name: Checkout source
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Fetch rootfs tarball from upload repo
|
||||||
|
run: |
|
||||||
|
VERSION=${{ matrix.version }}
|
||||||
|
git clone --depth=1 "https://${{ env.GIT_USERNAME }}:${{ secrets.GIT_TOKEN }}@gitea.fithwum.tech/fithwum/debian-base.git" upload-repo
|
||||||
|
mkdir -p "./output/$VERSION"
|
||||||
|
if [[ ! -f "upload-repo/$VERSION/debian-$VERSION.tar.bz2" ]]; then
|
||||||
|
echo "[ERROR] Rootfs tarball not found in upload-repo for $VERSION"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cp "upload-repo/$VERSION/debian-$VERSION.tar.bz2" "./output/$VERSION/"
|
||||||
|
|
||||||
- name: Prepare Docker context
|
- name: Prepare Docker context
|
||||||
run: |
|
run: |
|
||||||
VERSION=${{ matrix.version }}
|
VERSION=${{ matrix.version }}
|
||||||
CONTEXT_DIR="$VERSION"
|
CONTEXT_DIR="$VERSION"
|
||||||
mkdir -p "$CONTEXT_DIR"
|
mkdir -p "$CONTEXT_DIR"
|
||||||
echo "[INFO] Copying rootfs tarball into Docker context..."
|
|
||||||
cp "./output/$VERSION/debian-$VERSION.tar.bz2" "$CONTEXT_DIR/"
|
cp "./output/$VERSION/debian-$VERSION.tar.bz2" "$CONTEXT_DIR/"
|
||||||
|
|
||||||
- name: Generate Dockerfile
|
- name: Generate Dockerfile
|
||||||
@@ -403,25 +233,15 @@ jobs:
|
|||||||
|
|
||||||
TAR="./output/$VERSION/debian-$VERSION.tar.bz2"
|
TAR="./output/$VERSION/debian-$VERSION.tar.bz2"
|
||||||
if [[ ! -f "$TAR" ]]; then
|
if [[ ! -f "$TAR" ]]; then
|
||||||
echo "[ERROR] Rootfs tarball not found: $TAR"
|
echo "[ERROR] Rootfs tarball missing: $TAR"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Skip build if image already exists with same digest
|
|
||||||
if docker pull "$FULL_IMAGE" >/dev/null 2>&1; then
|
|
||||||
EXISTING_DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "$FULL_IMAGE")
|
|
||||||
NEW_DIGEST=$(sha256sum "$TAR" | awk '{print $1}')
|
|
||||||
if [[ "$EXISTING_DIGEST" == *"$NEW_DIGEST"* ]]; then
|
|
||||||
echo "[INFO] Docker image for $VERSION is up-to-date, skipping build."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "[INFO] Building and pushing Docker image: $FULL_IMAGE"
|
echo "[INFO] Building and pushing Docker image: $FULL_IMAGE"
|
||||||
docker buildx build --platform linux/amd64 --push -t "$FULL_IMAGE" "./$VERSION"
|
docker buildx build --platform linux/amd64 --push -t "$FULL_IMAGE" "./$VERSION"
|
||||||
|
|
||||||
generate-changelogs:
|
generate-changelogs:
|
||||||
needs: build-and-push-rootfs-archives
|
needs: build-and-push-docker-images
|
||||||
runs-on: vm-docker-build2
|
runs-on: vm-docker-build2
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source
|
- name: Checkout source
|
||||||
@@ -468,7 +288,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
generate-build-info:
|
generate-build-info:
|
||||||
needs: build-and-push-docker-images
|
needs: generate-changelogs
|
||||||
runs-on: vm-docker-build2
|
runs-on: vm-docker-build2
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout source
|
- name: Checkout source
|
||||||
@@ -482,15 +302,6 @@ jobs:
|
|||||||
GIT_CREDENTIAL="${{ secrets.GIT_TOKEN || secrets.GIT_PASSWORD }}"
|
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
|
git clone --depth=1 "https://${{ env.GIT_USERNAME }}:${GIT_CREDENTIAL}@gitea.fithwum.tech/fithwum/debian-base.git" upload-repo
|
||||||
|
|
||||||
- name: Copy sha256sums.txt
|
|
||||||
run: |
|
|
||||||
if [[ -f upload-repo/sha256sums.txt ]]; then
|
|
||||||
cp upload-repo/sha256sums.txt buildinfo/
|
|
||||||
else
|
|
||||||
echo "[ERROR] sha256sums.txt missing in upload-repo!"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Generate build-info.json files
|
- name: Generate build-info.json files
|
||||||
run: |
|
run: |
|
||||||
human_size() {
|
human_size() {
|
||||||
@@ -530,13 +341,30 @@ jobs:
|
|||||||
|
|
||||||
# Load SHA256 from file if available
|
# Load SHA256 from file if available
|
||||||
TARBALL_NAME="debian-$version.tar.bz2"
|
TARBALL_NAME="debian-$version.tar.bz2"
|
||||||
SHA256_LINE=$(grep -F "$TARBALL_NAME" sha256sums.txt || true)
|
TARBALL_PATH="../upload-repo/$version/$TARBALL_NAME"
|
||||||
if [[ -z "$SHA256_LINE" ]]; then
|
SHA_FILE="../upload-repo/$version/sha256sums.txt"
|
||||||
echo "[WARN] SHA256 for $TARBALL_NAME not found!"
|
|
||||||
SHA256="unknown"
|
SHA256="unknown"
|
||||||
else
|
|
||||||
|
if [[ -f "$TARBALL_PATH" ]]; then
|
||||||
|
echo "[INFO] Found tarball for $version: $TARBALL_NAME"
|
||||||
|
|
||||||
|
if [[ ! -f "$SHA_FILE" ]]; then
|
||||||
|
echo "[ERROR] sha256sums.txt missing for $version but tarball exists"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SHA256_LINE=$(grep -F "$TARBALL_NAME" "$SHA_FILE" || true)
|
||||||
|
|
||||||
|
if [[ -z "$SHA256_LINE" ]]; then
|
||||||
|
echo "[ERROR] SHA256 entry missing for $TARBALL_NAME in $SHA_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
SHA256=$(echo "$SHA256_LINE" | awk '{print $1}')
|
SHA256=$(echo "$SHA256_LINE" | awk '{print $1}')
|
||||||
echo "[INFO] SHA256 for $TARBALL_NAME: $SHA256"
|
echo "[INFO] SHA256 for $TARBALL_NAME: $SHA256"
|
||||||
|
else
|
||||||
|
echo "[INFO] No tarball for $version — skipping SHA256 enforcement"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
jq -n \
|
jq -n \
|
||||||
|
|||||||
@@ -3,6 +3,103 @@ VERSIONS: "buster bullseye bookworm"
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# build-and-push-rootfs-archives:
|
||||||
|
# runs-on: vm-docker-build2
|
||||||
|
# outputs:
|
||||||
|
# archives_changed: ${{ steps.commit_archives.outputs.archives_changed }}
|
||||||
|
# steps:
|
||||||
|
# - name: Checkout source
|
||||||
|
# uses: actions/checkout@v3
|
||||||
|
|
||||||
|
# - name: Create output directory
|
||||||
|
# run: mkdir -p ./output
|
||||||
|
|
||||||
|
# - name: Build all Debian rootfs versions into volumes and extract
|
||||||
|
# run: |
|
||||||
|
# versions=($VERSIONS)
|
||||||
|
# for version in "${versions[@]}"; do
|
||||||
|
# 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 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
|
||||||
|
|
||||||
|
# - 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
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# - 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
|
||||||
|
|
||||||
|
# - 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
|
||||||
|
# echo "[INFO] No changes to commit."
|
||||||
|
# echo "archives_changed=false" >> $GITHUB_OUTPUT
|
||||||
|
# fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
build-and-push-rootfs-archives:
|
build-and-push-rootfs-archives:
|
||||||
runs-on: vm-docker-build2
|
runs-on: vm-docker-build2
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
## 2025-12-20T19:24:31Z
|
## 2025-12-28T12:13:19Z
|
||||||
|
|
||||||
- 39cc904 2025-12-20 test (fithwum)
|
- 7b66200 2025-12-21 Update build-info on 2025-12-21T16:41:51Z (fithwum)
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"version": "bookworm",
|
"version": "bookworm",
|
||||||
"commit": "a5ce9834ad805fe66e1647a1d4eae861bd0b7e35",
|
"commit": "7b66200599d5f512ecf226717deafaf0ed32f20e",
|
||||||
"build_time": "2025-12-20T17:20:38Z",
|
"build_time": "2025-12-28T12:14:19Z",
|
||||||
"image_tag": "gitea.fithwum.tech/fithwum/debian-base:bookworm",
|
"image_tag": "gitea.fithwum.tech/fithwum/debian-base:bookworm",
|
||||||
"digest": "gitea.fithwum.tech/fithwum/debian-base@sha256:5c954228972b60057a94326bc50dda998fc5be414d639b1b06d421bdcffe0ea8",
|
"digest": "gitea.fithwum.tech/fithwum/debian-base@sha256:f87d2ae3e7ed4596dfa40cee913ef44ccdb2010f87f260dda007b4bdc88f0b53",
|
||||||
"image_size": "304MB",
|
"image_size": "325MB",
|
||||||
"image_size_bytes": 319684748,
|
"image_size_bytes": 341436537,
|
||||||
"rootfs_sha256": "18ecdd166ff1b257a010d1e261db59f3c4cf25606d9e17dadbef14840752b1e9"
|
"rootfs_sha256": "a37b5b6de6a418ecfc8dabd7a65efa50449f506405757d7f4d4e663e6145ee5b"
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
1
bookworm/sha256sums.txt
Normal file
1
bookworm/sha256sums.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
a37b5b6de6a418ecfc8dabd7a65efa50449f506405757d7f4d4e663e6145ee5b ../output/bookworm/debian-bookworm.tar.bz2
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
## 2025-12-20T19:24:31Z
|
## 2025-12-28T12:13:19Z
|
||||||
|
|
||||||
- 39cc904 2025-12-20 test (fithwum)
|
- 7b66200 2025-12-21 Update build-info on 2025-12-21T16:41:51Z (fithwum)
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"version": "bullseye",
|
"version": "bullseye",
|
||||||
"commit": "a5ce9834ad805fe66e1647a1d4eae861bd0b7e35",
|
"commit": "7b66200599d5f512ecf226717deafaf0ed32f20e",
|
||||||
"build_time": "2025-12-20T17:20:23Z",
|
"build_time": "2025-12-28T12:14:10Z",
|
||||||
"image_tag": "gitea.fithwum.tech/fithwum/debian-base:bullseye",
|
"image_tag": "gitea.fithwum.tech/fithwum/debian-base:bullseye",
|
||||||
"digest": "gitea.fithwum.tech/fithwum/debian-base@sha256:a5a37b822e24188309d73a4c39e0dc493fbd7bd55a9cdb0d6aaefd823d526eda",
|
"digest": "gitea.fithwum.tech/fithwum/debian-base@sha256:e47f8e49b2489232be51da5937a0ad2fe537dba1b59ede8669268b59f95b4673",
|
||||||
"image_size": "208MB",
|
"image_size": "218MB",
|
||||||
"image_size_bytes": 218759601,
|
"image_size_bytes": 228748624,
|
||||||
"rootfs_sha256": "cb6f3686ad38ba72a484e55d017be1e19cac4ead23123391de2bd0bc64b06b03"
|
"rootfs_sha256": "b3d699eb42a9e6da241df58af68aa96f099c2c7ac339b77b2a78c24b5fd006c3"
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
1
bullseye/sha256sums.txt
Normal file
1
bullseye/sha256sums.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
b3d699eb42a9e6da241df58af68aa96f099c2c7ac339b77b2a78c24b5fd006c3 ../output/bullseye/debian-bullseye.tar.bz2
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
b0d9d32bda45e2ae7fe59e702e5010386418753169b9d22a5380b61c756a01e2 bookworm/debian-bookworm.tar.bz2
|
|
||||||
ecaf35b7b1a37aed0de1e9e9fecb061a2b2747925ced844ac7964b5d401b0633 ../output/trixie/debian-trixie.tar.bz2
|
|
||||||
452ef61c9b24e0df006a4b3faea7d036cfa209fe714cda603b2a03b6c16b0893 ../output/bullseye/debian-bullseye.tar.bz2
|
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
## 2025-12-20T19:24:31Z
|
## 2025-12-28T12:13:19Z
|
||||||
|
|
||||||
- 39cc904 2025-12-20 test (fithwum)
|
- 7b66200 2025-12-21 Update build-info on 2025-12-21T16:41:51Z (fithwum)
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"version": "trixie",
|
"version": "trixie",
|
||||||
"commit": "a5ce9834ad805fe66e1647a1d4eae861bd0b7e35",
|
"commit": "7b66200599d5f512ecf226717deafaf0ed32f20e",
|
||||||
"build_time": "2025-12-20T17:20:45Z",
|
"build_time": "2025-12-28T12:14:26Z",
|
||||||
"image_tag": "gitea.fithwum.tech/fithwum/debian-base:trixie",
|
"image_tag": "gitea.fithwum.tech/fithwum/debian-base:trixie",
|
||||||
"digest": "gitea.fithwum.tech/fithwum/debian-base@sha256:77e4922b5c37a3876c240072831d38f4a7cf72d6226cd96da0f0bb2b0af211e3",
|
"digest": "gitea.fithwum.tech/fithwum/debian-base@sha256:9d7dd8e765f89935787b7906a0e821ecc3efcbc279337f4a0d6361906992ed30",
|
||||||
"image_size": "117MB",
|
"image_size": "209MB",
|
||||||
"image_size_bytes": 123027966,
|
"image_size_bytes": 219170606,
|
||||||
"rootfs_sha256": "2e0909f40cc33ba12482ce274010990270df7af325dfdb8888723b978c333531"
|
"rootfs_sha256": "afdc3a71cf80b7417cb6a69ea765f94b5f5abc61875662915b73a38af7c0e76f"
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
1
trixie/sha256sums.txt
Normal file
1
trixie/sha256sums.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
afdc3a71cf80b7417cb6a69ea765f94b5f5abc61875662915b73a38af7c0e76f ../output/trixie/debian-trixie.tar.bz2
|
||||||
Reference in New Issue
Block a user