diff --git a/.gitea/workflows/base-build.yml b/.gitea/workflows/base-build.yml index d7ede56..5b14cd3 100644 --- a/.gitea/workflows/base-build.yml +++ b/.gitea/workflows/base-build.yml @@ -1,133 +1,3 @@ -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_URL2 }} - 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 and append changelogs - run: | - cd upload-repo - for version in buster bullseye bookworm docker-build; do - changelog="$version/CHANGES.md" - mkdir -p "$(dirname "$changelog")" - touch "$changelog" - echo "[INFO] Updating changelog for $version" - - echo -e "\n## $(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$changelog" - git log -n 5 --pretty=format:"- %s" >> "$changelog" - 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 . - 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: @@ -138,7 +8,7 @@ jobs: # - cron: '0 12 * * 0' # Sundays at noon UTC # env: -# REPO_URL: ${{ secrets.REPO_URL }} +# REPO_URL: ${{ secrets.REPO_URL2 }} # GIT_USERNAME: ${{ secrets.GIT_USERNAME }} # GIT_EMAIL: ${{ secrets.GIT_EMAIL }} # DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} @@ -199,6 +69,19 @@ jobs: # cp "$filepath" upload-repo/"$version_dir"/ # done +# - name: Generate and append changelogs +# run: | +# cd upload-repo +# for version in buster bullseye bookworm docker-build; do +# changelog="$version/CHANGES.md" +# mkdir -p "$(dirname "$changelog")" +# touch "$changelog" +# echo "[INFO] Updating changelog for $version" + +# echo -e "\n## $(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> "$changelog" +# git log -n 5 --pretty=format:"- %s" >> "$changelog" +# done + # - name: Commit and push archives if changed # run: | # cd upload-repo @@ -206,8 +89,8 @@ jobs: # 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 add . +# 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." @@ -237,4 +120,121 @@ jobs: # 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 + + + + + + + +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