diff --git a/.gitea/workflows/base-build.yml b/.gitea/workflows/base-build.yml index d0d16d4..004c6df 100644 --- a/.gitea/workflows/base-build.yml +++ b/.gitea/workflows/base-build.yml @@ -115,62 +115,77 @@ jobs: IMAGE="$IMAGE_REGISTRY/$IMAGE_ORG/$IMAGE_REPO_MINECRAFT:${{ matrix.version }}" docker buildx build --platform linux/amd64 --push -t "$IMAGE" "./${{ matrix.version }}" - generate-changelogs: - needs: build-minecraft-images - runs-on: doc-docker-build2 - strategy: - matrix: - version: [vanilla, testing, fabric] +generate-changelogs: + needs: poll-debian-base-and-detect-changes + if: needs.poll-debian-base-and-detect-changes.outputs.digest_changed == 'true' || needs.poll-debian-base-and-detect-changes.outputs.versions_changed != '' + runs-on: doc-docker-build2 + strategy: + matrix: + version: [vanilla, testing, fabric] - steps: - - name: Checkout repo - uses: actions/checkout@v3 + steps: + - name: Checkout repo + uses: actions/checkout@v3 - - name: Clone Minecraft repo (with retries) - run: | - GIT_CREDENTIAL="${{ secrets.GIT_TOKEN || secrets.GIT_PASSWORD }}" - for i in {1..5}; do - git clone "https://${{ secrets.GIT_USERNAME }}:${GIT_CREDENTIAL}@gitea.fithwum.tech/fithwum/minecraft.git" upload-repo && break - echo "[WARN] Clone attempt $i failed. Retrying in 10s..." - sleep 10 - done - if [ ! -d upload-repo ]; then - echo "[ERROR] Failed to clone Minecraft repo after retries." - exit 1 - fi + - name: Clone Minecraft repo (with retries) + run: | + GIT_CREDENTIAL="${{ secrets.GIT_TOKEN || secrets.GIT_PASSWORD }}" + for i in {1..5}; do + git clone "https://${{ secrets.GIT_USERNAME }}:${GIT_CREDENTIAL}@gitea.fithwum.tech/fithwum/minecraft.git" upload-repo && break + echo "[WARN] Clone attempt $i failed. Retrying in 10s..." + sleep 10 + done + if [ ! -d upload-repo ]; then + echo "[ERROR] Failed to clone Minecraft repo after retries." + exit 1 + fi - - name: Update changelog - run: | - cd upload-repo - changelog="${{ matrix.version }}/CHANGES.md" - mkdir -p "$(dirname "$changelog")" - touch "$changelog" - - infofile="${{ matrix.version }}/build-info.json" - last_commit="" - if [ -f "$infofile" ]; then - last_commit=$(jq -r '.commit' "$infofile") - fi + - name: Generate changelog + run: | + cd upload-repo + changelog="${{ matrix.version }}/CHANGES.md" + mkdir -p "$(dirname "$changelog")" + touch "$changelog" - echo -e "## $(date -u +'%Y-%m-%dT%H:%M:%SZ')\n" >> "$changelog" - if [ -n "$last_commit" ]; then - git log "${last_commit}..HEAD" --pretty=format:"- %s (%an)" | head -n 10 >> "$changelog" - else - git log -n 10 --pretty=format:"- %s (%an)" >> "$changelog" - fi + infofile="${{ matrix.version }}/build-info.json" + last_commit="" + if [ -f "$infofile" ]; then + last_commit=$(jq -r '.commit' "$infofile") + fi - - name: Commit and push changelog - run: | - cd upload-repo - git config user.name "${{ secrets.GIT_USERNAME }}" - git config user.email "${{ secrets.GIT_EMAIL }}" - if git status --porcelain | grep .; then - git add "${{ matrix.version }}/CHANGES.md" - git commit -m "Update changelog for ${{ matrix.version }}" || true - git push - else - echo "[INFO] No changelog changes to commit." - fi + echo -e "## $(date -u +'%Y-%m-%dT%H:%M:%SZ')\n" >> "$changelog" + + if [ -n "$last_commit" ]; then + COMMITS=$(git log "${last_commit}..HEAD" --pretty=format:"- %s (%an)" || true) + fi + + if [ -z "$COMMITS" ]; then + echo "[INFO] No new commits since last build. Showing latest 5 instead." + COMMITS=$(git log -n 5 --pretty=format:"- %s (%an)" || true) + fi + + echo "$COMMITS" >> "$changelog" + + - name: Show git status (debug) + run: | + cd upload-repo + echo "[DEBUG] Git status before commit:" + git status + echo "[DEBUG] Git diff:" + git diff + + - name: Commit and push changelog + run: | + cd upload-repo + git config user.name "${{ secrets.GIT_USERNAME }}" + git config user.email "${{ secrets.GIT_EMAIL }}" + if git status --porcelain | grep .; then + git add "${{ matrix.version }}/CHANGES.md" + git commit -m "Update changelog for ${{ matrix.version }}" || true + git push + else + echo "[INFO] No changelog changes to commit." + fi generate-build-info: needs: generate-changelogs