From e40de18dbb887cdc821194533bf376af2634069e Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Wed, 22 Apr 2026 21:30:38 -0500 Subject: [PATCH] fix: switch back to direct API file update for updates.xml sync PR-based sync fails with branch protection requiring reviews. Direct API update bypasses protection for bot commits. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../joomla/auto-release.yml.template | 51 +++---------------- 1 file changed, 7 insertions(+), 44 deletions(-) diff --git a/templates/workflows/joomla/auto-release.yml.template b/templates/workflows/joomla/auto-release.yml.template index 25cdcf0..04ce6ea 100644 --- a/templates/workflows/joomla/auto-release.yml.template +++ b/templates/workflows/joomla/auto-release.yml.template @@ -596,25 +596,12 @@ jobs: --author="gitea-actions[bot] " || true git push || true - # Sync updates.xml to main via PR (always runs — may be on version/XX branch) + # Sync updates.xml to main via direct API (always runs — may be on version/XX branch) GA_TOKEN="${{ secrets.GA_TOKEN }}" API="${GITEA_URL:-https://git.mokoconsulting.tech}/api/v1/repos/${{ github.repository }}" - PR_BRANCH="chore/update-xml-${VERSION}" - # Cleanup stale PR branch - curl -sf -X DELETE -H "Authorization: token ${GA_TOKEN}" \ - "${API}/branches/${PR_BRANCH}" > /dev/null 2>&1 || true - - # Create fresh branch from main - curl -sf -X POST -H "Authorization: token ${GA_TOKEN}" \ - -H "Content-Type: application/json" \ - "${API}/branches" \ - -d "$(jq -n --arg name "$PR_BRANCH" \ - '{new_branch_name: $name, old_branch_name: "main"}')" > /dev/null 2>&1 || true - - # Update updates.xml on PR branch FILE_SHA=$(curl -sf -H "Authorization: token ${GA_TOKEN}" \ - "${API}/contents/updates.xml?ref=${PR_BRANCH}" | jq -r '.sha // empty') + "${API}/contents/updates.xml?ref=main" | jq -r '.sha // empty') if [ -n "$FILE_SHA" ]; then CONTENT=$(base64 -w0 updates.xml) @@ -625,37 +612,13 @@ jobs: --arg content "$CONTENT" \ --arg sha "$FILE_SHA" \ --arg msg "chore: sync updates.xml ${VERSION} [skip ci]" \ - --arg branch "$PR_BRANCH" \ + --arg branch "main" \ '{content: $content, sha: $sha, message: $msg, branch: $branch}' - )" > /dev/null 2>&1 - - # Create and auto-merge PR - PR_NUM=$(curl -sf -X POST -H "Authorization: token ${GA_TOKEN}" \ - -H "Content-Type: application/json" \ - "${API}/pulls" \ - -d "$(jq -n \ - --arg title "chore: sync updates.xml ${VERSION} [skip ci]" \ - --arg head "$PR_BRANCH" \ - --arg base "main" \ - --arg body "Auto-generated by release workflow." \ - '{title: $title, head: $head, base: $base, body: $body}' - )" | jq -r '.number // empty') - - if [ -n "$PR_NUM" ]; then - curl -sf -X POST -H "Authorization: token ${GA_TOKEN}" \ - -H "Content-Type: application/json" \ - "${API}/pulls/${PR_NUM}/merge" \ - -d '{"Do":"merge","merge_message_field":"chore: sync updates.xml '"${VERSION}"' [skip ci]"}' > /dev/null 2>&1 \ - && echo "updates.xml synced to main via PR #${PR_NUM}" \ - || echo "PR #${PR_NUM} created — merge manually" - # Cleanup - curl -sf -X DELETE -H "Authorization: token ${GA_TOKEN}" \ - "${API}/branches/${PR_BRANCH}" > /dev/null 2>&1 || true - else - echo "WARNING: PR creation failed" - fi + )" > /dev/null 2>&1 \ + && echo "updates.xml synced to main via API" \ + || echo "WARNING: failed to sync updates.xml to main" else - echo "WARNING: could not get updates.xml SHA from PR branch" + echo "WARNING: could not get updates.xml SHA from main" fi fi