From d0ecc6ff9d59f5197845222c5e2ee9f0b281b31a Mon Sep 17 00:00:00 2001 From: Tracewebstudio Dev Date: Thu, 30 Apr 2026 20:13:35 +0200 Subject: [PATCH] fix(ci): derive gitea login from token and retry auth modes --- .github/workflows/sync-to-gitea.yml | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/.github/workflows/sync-to-gitea.yml b/.github/workflows/sync-to-gitea.yml index 99869eb..981de93 100644 --- a/.github/workflows/sync-to-gitea.yml +++ b/.github/workflows/sync-to-gitea.yml @@ -34,6 +34,11 @@ jobs: REPO_NAME="${{ github.event.repository.name }}" BRANCH_NAME="${{ github.ref_name }}" + API_USER_JSON="$(curl -fsS -H "Authorization: token ${GITEA_TOKEN}" "https://${GITEA_HOST}/api/v1/user" || true)" + RESOLVED_GITEA_USER="$(printf '%s' "$API_USER_JSON" | jq -r '.login // empty')" + if [ -n "$RESOLVED_GITEA_USER" ]; then + echo "Resolved token user: $RESOLVED_GITEA_USER" + fi CANDIDATE_OWNERS="${GITEA_OWNER:-} Admin ${{ github.repository_owner }}" TARGET_FULL_NAME="" TARGET_URL="" @@ -64,17 +69,29 @@ jobs: exit 1 fi - for auth_url in \ - "https://${GITEA_USERNAME}:${GITEA_TOKEN}@${GITEA_HOST}/${TARGET_FULL_NAME}.git" \ - "https://${GITEA_TOKEN}@${GITEA_HOST}/${TARGET_FULL_NAME}.git" \ - "https://oauth2:${GITEA_TOKEN}@${GITEA_HOST}/${TARGET_FULL_NAME}.git"; do + for auth_user in "$RESOLVED_GITEA_USER" "$GITEA_USERNAME" "oauth2"; do + [ -n "$auth_user" ] || continue + auth_url="https://${auth_user}:${GITEA_TOKEN}@${GITEA_HOST}/${TARGET_FULL_NAME}.git" if git ls-remote "$auth_url" >/dev/null 2>&1; then TARGET_URL="$auth_url" - echo "Using Gitea credential mode for ${TARGET_FULL_NAME}" + echo "Using Gitea credential mode for ${TARGET_FULL_NAME} as ${auth_user}" break fi done + if [ -z "$TARGET_URL" ]; then + for auth_url in \ + "https://${GITEA_USERNAME}:${GITEA_TOKEN}@${GITEA_HOST}/${TARGET_FULL_NAME}.git" \ + "https://${GITEA_TOKEN}@${GITEA_HOST}/${TARGET_FULL_NAME}.git" \ + "https://oauth2:${GITEA_TOKEN}@${GITEA_HOST}/${TARGET_FULL_NAME}.git"; do + if git ls-remote "$auth_url" >/dev/null 2>&1; then + TARGET_URL="$auth_url" + echo "Using Gitea credential mode for ${TARGET_FULL_NAME}" + break + fi + done + fi + if [ -z "$TARGET_URL" ]; then echo "Resolved repo path but authentication to Gitea git remote failed" exit 1