--- info "Commit créé : ${COMMIT_HASH}" # Push helpers get_remote_url() { git remote get-url "${GIT_REMOTE}" 2>/dev/null || true } # Build an authenticated URL for one-shot push (does not change remote config) # Works for https remotes. make_auth_url_from_remote() { local remote_url="$1" if [ -z "${GITEA_HOST:-}" ] || [ -z "${GITEA_USER:-}" ] || [ -z "${GITEA_TOKEN:-}" ]; then echo "" return fi # Only for http(s) if ! echo "$remote_url" | grep -qE '^https?://'; then echo "" return fi # Extract path after host # Accepts: # https://gitea.host/user/repo.git # https://gitea.host/user/repo local path path=$(echo "$remote_url" | sed -E 's#^https?://[^/]+/##') # If remote points to a different host, skip if ! echo "$remote_url" | grep -q "${GITEA_HOST}"; then echo "" return fi # Auth URL echo "https://${GITEA_USER}:${GITEA_TOKEN}@${GITEA_HOST}/${path}" } # Push info "Push vers ${GIT_REMOTE}/${CURRENT_BRANCH}" set +e if git push "${GIT_REMOTE}" "${CURRENT_BRANCH}"; then set -e info "Push OK" echo "$DIFF_STAT" exit 0 fi set -e warn "Push standard échoué. Tentative de fallback via token (si configuré)." REMOTE_URL="$(get_remote_url)" AUTH_URL="$(make_auth_url_from_remote "$REMOTE_URL")" if [ -n "$AUTH_URL" ]; then set +e if git push "$AUTH_URL" "${CURRENT_BRANCH}"; then set -e info "Push OK via URL authentifiée (remote inchangé)" echo "$DIFF_STAT" exit 0 fi set -e fi error "Push échoué. Vérifier : droits Gitea, token, remote ${GIT_REMOTE}, ou credentials git." exit 1