From 831b79e22aaf9edcde860e257f8b7d9e2463774d Mon Sep 17 00:00:00 2001 From: fithwum Date: Sat, 5 Jul 2025 13:29:47 -0700 Subject: [PATCH] changelog test --- .gitea/workflows/base-build.yml | 261 ++++++++++++++++---------------- 1 file changed, 132 insertions(+), 129 deletions(-) diff --git a/.gitea/workflows/base-build.yml b/.gitea/workflows/base-build.yml index 2c01e46..60bec72 100644 --- a/.gitea/workflows/base-build.yml +++ b/.gitea/workflows/base-build.yml @@ -1,3 +1,132 @@ +name: Build, Upload RootFS, and Push Docker Images + +on: + push: + branches: + - main + schedule: + - cron: '0 12 * * 0' # Sundays at noon UTC + +env: + REPO_URL: ${{ secrets.REPO_URL }} + GIT_USERNAME: ${{ secrets.GIT_USERNAME }} + GIT_EMAIL: ${{ secrets.GIT_EMAIL }} + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + +jobs: + build-rootfs-archives: + runs-on: docker-build + + steps: + - name: Checkout source + uses: actions/checkout@v3 + + - name: Build all Debian rootfs versions sequentially + run: | + versions=(buster bullseye bookworm docker-build) + + for version in "${versions[@]}"; do + echo "[INFO] Building Debian $version rootfs..." + docker build --build-arg VERSION=$version -t fithwum/debian-$version-base . + + docker run --rm --privileged \ + -v "$(pwd)":/output \ + fithwum/debian-$version-base \ + bash base-image-script/debian-${version}_pt1.sh + done + + - name: List output archives + run: | + echo "[INFO] Looking for tarballs in workspace..." + find . -name '*.tar.bz2' -ls + + push-archives-to-repo: + needs: build-rootfs-archives + runs-on: docker-build + + steps: + - name: Checkout source + uses: actions/checkout@v3 + + - name: Clone upload repo + run: git clone "${{ env.REPO_URL }}" upload-repo + + - name: Clean old archives in upload-repo + run: rm -rf upload-repo/*/*.tar.bz2 + + - name: Copy new archives to upload-repo + run: | + found=$(find . -name '*.tar.bz2') + if [ -z "$found" ]; then + echo "[WARNING] No .tar.bz2 archive found!" + exit 1 + fi + + for filepath in $found; do + version_dir=$(dirname "$filepath") + mkdir -p upload-repo/"$version_dir" + cp "$filepath" upload-repo/"$version_dir"/ + done + + - name: Generate changelogs per version + run: | + cd upload-repo + git fetch --tags + + last_tag=$(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD) + + for version in buster bullseye bookworm docker-build; do + echo "[INFO] Generating CHANGES.md for $version" + git log --pretty=format:"- %s" "$last_tag"..HEAD -- "$version/" > "$version/CHANGES.md" + done + + - name: Commit and push archives if changed + 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 **/CHANGES.md + git commit -m "Update base images and changelogs on $(date -u +'%Y-%m-%dT%H:%M:%SZ')" + git push + else + echo "[INFO] No changes to commit." + fi + + build-and-push-docker-images: + needs: push-archives-to-repo + runs-on: docker-build + + steps: + - name: Checkout source + uses: actions/checkout@v3 + + - 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 buster bullseye bookworm docker-build; 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 + + + + + + + # name: Build, Upload RootFS, and Push Docker Images # on: @@ -75,18 +204,9 @@ # git config --global user.name "${{ env.GIT_USERNAME }}" # git config --global user.email "${{ env.GIT_EMAIL }}" -# for version in buster bullseye bookworm docker-build; do -# echo "[INFO] Generating CHANGES.md for $version" -# mkdir -p "$version" -# echo "# Changelog for \`$version\`" > "$version/CHANGES.md" -# echo "" >> "$version/CHANGES.md" -# git -C .. log --since="7 days ago" --pretty=format:"- %s (%h)" --grep="$version" >> "$version/CHANGES.md" -# echo "" >> "$version/CHANGES.md" -# done - # if git status --porcelain | grep .; then -# git add **/*.tar.bz2 **/CHANGES.md -# git commit -m "Update base images and changelogs on $(date -u +'%Y-%m-%dT%H:%M:%SZ')" +# git add **/*.tar.bz2 +# git commit -m "Update base images on $(date -u +'%Y-%m-%dT%H:%M:%SZ')" # git push # else # echo "[INFO] No changes to commit." @@ -116,121 +236,4 @@ # 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 - - - - - - - -name: Build, Upload RootFS, and Push Docker Images - -on: - push: - branches: - - main - schedule: - - cron: '0 12 * * 0' # Sundays at noon UTC - -env: - REPO_URL: ${{ secrets.REPO_URL }} - GIT_USERNAME: ${{ secrets.GIT_USERNAME }} - GIT_EMAIL: ${{ secrets.GIT_EMAIL }} - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - -jobs: - build-rootfs-archives: - runs-on: docker-build - - steps: - - name: Checkout source - uses: actions/checkout@v3 - - - name: Build all Debian rootfs versions sequentially - run: | - versions=(buster bullseye bookworm docker-build) - - for version in "${versions[@]}"; do - echo "[INFO] Building Debian $version rootfs..." - docker build --build-arg VERSION=$version -t fithwum/debian-$version-base . - - docker run --rm --privileged \ - -v "$(pwd)":/output \ - fithwum/debian-$version-base \ - bash base-image-script/debian-${version}_pt1.sh - done - - - name: List output archives - run: | - echo "[INFO] Looking for tarballs in workspace..." - find . -name '*.tar.bz2' -ls - - push-archives-to-repo: - needs: build-rootfs-archives - runs-on: docker-build - - steps: - - name: Checkout source - uses: actions/checkout@v3 - - - name: Clone upload repo - run: git clone "${{ env.REPO_URL }}" upload-repo - - - name: Clean old archives in upload-repo - run: rm -rf upload-repo/*/*.tar.bz2 - - - name: Copy new archives to upload-repo - run: | - found=$(find . -name '*.tar.bz2') - if [ -z "$found" ]; then - echo "[WARNING] No .tar.bz2 archive found!" - exit 1 - fi - - for filepath in $found; do - version_dir=$(dirname "$filepath") - mkdir -p upload-repo/"$version_dir" - cp "$filepath" upload-repo/"$version_dir"/ - done - - - name: Commit and push archives if changed - 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 - git commit -m "Update base images on $(date -u +'%Y-%m-%dT%H:%M:%SZ')" - git push - else - echo "[INFO] No changes to commit." - fi - - build-and-push-docker-images: - needs: push-archives-to-repo - runs-on: docker-build - - steps: - - name: Checkout source - uses: actions/checkout@v3 - - - 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 buster bullseye bookworm docker-build; 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 \ No newline at end of file +# done \ No newline at end of file