update fix for workflow
Build and Push Minecraft Docker Images on Debian-base update / Build and Push bukkit (push) Failing after 5s
Build and Push Minecraft Docker Images on Debian-base update / Build and Push fabric (push) Failing after 5s
Build and Push Minecraft Docker Images on Debian-base update / Build and Push forge (push) Failing after 5s
Build and Push Minecraft Docker Images on Debian-base update / Build and Push neoforged (push) Failing after 4s
Build and Push Minecraft Docker Images on Debian-base update / Build and Push quilt (push) Failing after 4s
Build and Push Minecraft Docker Images on Debian-base update / Build and Push testing (push) Failing after 4s
Build and Push Minecraft Docker Images on Debian-base update / Build and Push vanilla (push) Failing after 4s
Build and Push Minecraft Docker Images on Debian-base update / Docker prune (vm-docker-build2) (push) Successful in 2s
Build and Push Minecraft Docker Images on Debian-base update / generate-changelogs (push) Has been skipped
Build and Push Minecraft Docker Images on Debian-base update / generate-build-info (push) Has been skipped

This commit is contained in:
2026-06-26 09:46:39 -07:00
parent 03a04c5d38
commit 3c56a6b3eb
+84 -90
View File
@@ -39,115 +39,109 @@ jobs:
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
poll-debian-base-and-detect-changes: # poll-debian-base-and-detect-changes:
runs-on: vm-docker-build2 # runs-on: vm-docker-build2
needs: docker-prune # needs: docker-prune
outputs: # outputs:
digest_changed: ${{ steps.compare_digest.outputs.changed }} # digest_changed: ${{ steps.compare_digest.outputs.changed }}
versions_changed: ${{ steps.check_changed_versions.outputs.versions_changed }} # versions_changed: ${{ steps.check_changed_versions.outputs.versions_changed }}
new_versions: ${{ steps.check_new_versions.outputs.new_versions }} # new_versions: ${{ steps.check_new_versions.outputs.new_versions }}
steps: # steps:
- name: Checkout repo # - name: Checkout repo
uses: actions/checkout@v3 # uses: actions/checkout@v3
with: # with:
fetch-depth: 0 # fetch-depth: 0
- name: Ensure .cache exists # - name: Ensure .cache exists
run: mkdir -p .cache && touch .cache/.gitkeep # run: mkdir -p .cache && touch .cache/.gitkeep
- name: Debug IMAGE_REGISTRY # - name: Log in to Gitea Registry
run: | # run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login gitea.fithwum.tech -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
echo "IMAGE_REGISTRY=<$IMAGE_REGISTRY>"
printf '%q\n' "$IMAGE_REGISTRY"
- name: Log in to Gitea Registry # - name: Get current digest of debian-base image
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login gitea.fithwum.tech -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin # id: get_digest
# run: |
# IMAGE="${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_ORG }}/${{ env.IMAGE_REPO_DEBIAN }}:${{ env.IMAGE_TAG_DEBIAN }}"
# docker pull "$IMAGE" > /dev/null
# DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "$IMAGE")
# echo "digest=$DIGEST" >> $GITHUB_OUTPUT
# echo "$DIGEST" > .cache/debian-base.digest.new
- name: Get current digest of debian-base image # - name: Compare with stored digest
id: get_digest # id: compare_digest
run: | # run: |
IMAGE="${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_ORG }}/${{ env.IMAGE_REPO_DEBIAN }}:${{ env.IMAGE_TAG_DEBIAN }}" # CURRENT_DIGEST="${{ steps.get_digest.outputs.digest }}"
docker pull "$IMAGE" > /dev/null # LAST_DIGEST="$(cat ${{ env.DIGEST_FILE }} 2>/dev/null || echo '')"
DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' "$IMAGE")
echo "digest=$DIGEST" >> $GITHUB_OUTPUT
echo "$DIGEST" > .cache/debian-base.digest.new
- name: Compare with stored digest # if [ "$CURRENT_DIGEST" = "$LAST_DIGEST" ]; then
id: compare_digest # echo "[INFO] Digest unchanged"
run: | # echo "changed=false" >> $GITHUB_OUTPUT
CURRENT_DIGEST="${{ steps.get_digest.outputs.digest }}" # exit 0
LAST_DIGEST="$(cat ${{ env.DIGEST_FILE }} 2>/dev/null || echo '')" # fi
if [ "$CURRENT_DIGEST" = "$LAST_DIGEST" ]; then # echo "[INFO] Digest changed → updating cache"
echo "[INFO] Digest unchanged" # echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }}
echo "changed=false" >> $GITHUB_OUTPUT
exit 0
fi
echo "[INFO] Digest changed → updating cache" # git config user.name "${{ secrets.GIT_USERNAME }}"
echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }} # git config user.email "${{ secrets.GIT_EMAIL }}"
git config user.name "${{ secrets.GIT_USERNAME }}" # git add ${{ env.DIGEST_FILE }}
git config user.email "${{ secrets.GIT_EMAIL }}" # git commit -m "Update base digest to $CURRENT_DIGEST" || true
git add ${{ env.DIGEST_FILE }} # # --- Safe rebase with auto conflict resolution ---
git commit -m "Update base digest to $CURRENT_DIGEST" || true # git fetch origin master
# if ! git rebase --strategy-option=theirs origin/master; then
# echo "[WARN] Rebase conflict, auto-resolving by preferring local digest"
# git rebase --abort
# git fetch origin master
# git reset --hard origin/master
# echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }}
# git add ${{ env.DIGEST_FILE }}
# git commit -m "Force-update base digest to $CURRENT_DIGEST (auto-resolved)"
# fi
# --- Safe rebase with auto conflict resolution --- # git push origin HEAD:master
git fetch origin master # echo "changed=true" >> $GITHUB_OUTPUT
if ! git rebase --strategy-option=theirs origin/master; then
echo "[WARN] Rebase conflict, auto-resolving by preferring local digest"
git rebase --abort
git fetch origin master
git reset --hard origin/master
echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }}
git add ${{ env.DIGEST_FILE }}
git commit -m "Force-update base digest to $CURRENT_DIGEST (auto-resolved)"
fi
git push origin HEAD:master # - name: Detect changed Minecraft versions
echo "changed=true" >> $GITHUB_OUTPUT # id: check_changed_versions
# run: |
- name: Detect changed Minecraft versions # BEFORE_COMMIT="${{ github.event.before }}"
id: check_changed_versions # if [ -z "$BEFORE_COMMIT" ] || ! git cat-file -e "$BEFORE_COMMIT^{commit}" 2>/dev/null; then
run: | # BEFORE_COMMIT=$(git rev-parse HEAD~1)
BEFORE_COMMIT="${{ github.event.before }}" # fi
if [ -z "$BEFORE_COMMIT" ] || ! git cat-file -e "$BEFORE_COMMIT^{commit}" 2>/dev/null; then # CHANGED=$(git diff --name-only "$BEFORE_COMMIT" HEAD || true)
BEFORE_COMMIT=$(git rev-parse HEAD~1) # CHANGED_VERSIONS=""
fi # for version in $VERSIONS; do
CHANGED=$(git diff --name-only "$BEFORE_COMMIT" HEAD || true) # echo "$CHANGED" | grep -q "^$version/.*\.\(sh\|Dockerfile\)$" && CHANGED_VERSIONS="$CHANGED_VERSIONS $version"
CHANGED_VERSIONS="" # done
for version in $VERSIONS; do # CHANGED_VERSIONS=$(echo "$CHANGED_VERSIONS" | xargs) # trim whitespace
echo "$CHANGED" | grep -q "^$version/.*\.\(sh\|Dockerfile\)$" && CHANGED_VERSIONS="$CHANGED_VERSIONS $version" # echo "versions_changed=$CHANGED_VERSIONS" >> $GITHUB_OUTPUT
done
CHANGED_VERSIONS=$(echo "$CHANGED_VERSIONS" | xargs) # trim whitespace
echo "versions_changed=$CHANGED_VERSIONS" >> $GITHUB_OUTPUT
- name: Detect Minecraft versions without build-info # - name: Detect Minecraft versions without build-info
id: check_new_versions # id: check_new_versions
run: | # run: |
NEW_VERSIONS="" # NEW_VERSIONS=""
GIT_CREDENTIAL="${{ secrets.GIT_TOKEN || secrets.GIT_PASSWORD }}" # GIT_CREDENTIAL="${{ secrets.GIT_TOKEN || secrets.GIT_PASSWORD }}"
git clone --depth=1 "https://${{ secrets.GIT_USERNAME }}:${GIT_CREDENTIAL}@gitea.fithwum.tech/fithwum/minecraft.git" upload-repo # git clone --depth=1 "https://${{ secrets.GIT_USERNAME }}:${GIT_CREDENTIAL}@gitea.fithwum.tech/fithwum/minecraft.git" upload-repo
for version in $VERSIONS; do # for version in $VERSIONS; do
if [ ! -f "upload-repo/$version/build-info.json" ]; then # if [ ! -f "upload-repo/$version/build-info.json" ]; then
echo "[INFO] No build-info.json for $version → treating as new" # echo "[INFO] No build-info.json for $version → treating as new"
NEW_VERSIONS="$NEW_VERSIONS $version" # NEW_VERSIONS="$NEW_VERSIONS $version"
fi # fi
done # done
echo "new_versions=$NEW_VERSIONS" >> $GITHUB_OUTPUT # echo "new_versions=$NEW_VERSIONS" >> $GITHUB_OUTPUT
build-minecraft-images: build-minecraft-images:
runs-on: vm-docker-build2 runs-on: vm-docker-build2
needs: needs:
- docker-prune - docker-prune
- poll-debian-base-and-detect-changes # if: |
if: | # needs.poll-debian-base-and-detect-changes.outputs.digest_changed == 'true' ||
needs.poll-debian-base-and-detect-changes.outputs.digest_changed == 'true' || # needs.poll-debian-base-and-detect-changes.outputs.versions_changed != '' ||
needs.poll-debian-base-and-detect-changes.outputs.versions_changed != '' || # needs.poll-debian-base-and-detect-changes.outputs.new_versions != ''
needs.poll-debian-base-and-detect-changes.outputs.new_versions != ''
strategy: strategy:
matrix: matrix:
version: [testing, vanilla, fabric, neoforged, forge, bukkit, quilt] version: [testing, vanilla, fabric, neoforged, forge, bukkit, quilt]