From ea9a6249ffae4dd595059359243fc76dd844faeb Mon Sep 17 00:00:00 2001 From: fithwum Date: Sun, 26 Oct 2025 16:15:29 -0700 Subject: [PATCH] Update .gitea/workflows/pipeline.yml --- .gitea/workflows/pipeline.yml | 62 +++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/.gitea/workflows/pipeline.yml b/.gitea/workflows/pipeline.yml index 79af84c..23c969c 100644 --- a/.gitea/workflows/pipeline.yml +++ b/.gitea/workflows/pipeline.yml @@ -56,23 +56,59 @@ jobs: run: | CURRENT_DIGEST="${{ steps.get_digest.outputs.digest }}" LAST_DIGEST="$(cat ${{ env.DIGEST_FILE }} 2>/dev/null || echo '')" + if [ "$CURRENT_DIGEST" = "$LAST_DIGEST" ]; then + echo "[INFO] Digest unchanged" echo "changed=false" >> $GITHUB_OUTPUT - else - echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }} - git config user.name "${{ secrets.GIT_USERNAME }}" - git config user.email "${{ secrets.GIT_EMAIL }}" - git add ${{ env.DIGEST_FILE }} - git commit -m "Update base digest to $CURRENT_DIGEST" || true - # Try to rebase onto latest remote - git pull --rebase || { - echo "[ERROR] Rebase failed — aborting." - exit 1 - } - git push - echo "changed=true" >> $GITHUB_OUTPUT + exit 0 fi + echo "[INFO] Digest changed → updating cache" + echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }} + + git config user.name "${{ secrets.GIT_USERNAME }}" + git config user.email "${{ secrets.GIT_EMAIL }}" + + git add ${{ env.DIGEST_FILE }} + git commit -m "Update base digest to $CURRENT_DIGEST" || true + + # --- Safe rebase with auto conflict resolution --- + 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 + + git push origin HEAD:master + echo "changed=true" >> $GITHUB_OUTPUT + + # - name: Compare with stored digest + # id: compare_digest + # run: | + # CURRENT_DIGEST="${{ steps.get_digest.outputs.digest }}" + # LAST_DIGEST="$(cat ${{ env.DIGEST_FILE }} 2>/dev/null || echo '')" + # if [ "$CURRENT_DIGEST" = "$LAST_DIGEST" ]; then + # echo "changed=false" >> $GITHUB_OUTPUT + # else + # echo "$CURRENT_DIGEST" > ${{ env.DIGEST_FILE }} + # git config user.name "${{ secrets.GIT_USERNAME }}" + # git config user.email "${{ secrets.GIT_EMAIL }}" + # git add ${{ env.DIGEST_FILE }} + # git commit -m "Update base digest to $CURRENT_DIGEST" || true + # # Try to rebase onto latest remote + # git pull --rebase || { + # echo "[ERROR] Rebase failed — aborting." + # exit 1 + # } + # git push + # echo "changed=true" >> $GITHUB_OUTPUT + # fi + - name: Detect changed Minecraft versions id: check_changed_versions run: |