News publish: push-main fallback when merge API fails #4
@ -214,12 +214,24 @@ def try_auto_publish(article_html: str, *, updated_at: str) -> dict[str, Any]:
|
||||
number = pr["number"]
|
||||
unlock = unlock_news_main()
|
||||
merged = merge_pr(number)
|
||||
merge_status = merged.get("status")
|
||||
push_main = None
|
||||
if merge_status and int(merge_status) >= 400:
|
||||
# Gitea merge API often returns 405/"try again later"; push main while unlocked.
|
||||
_git(news_repo, "fetch", "origin")
|
||||
_git(news_repo, "checkout", "main")
|
||||
_git(news_repo, "pull", "--ff-only", "origin", "main")
|
||||
_git(news_repo, "merge", f"origin/{branch}", "-m", f"Merge {title}")
|
||||
push = _git(news_repo, "push", "origin", "main")
|
||||
push_main = {"returncode": push.returncode, "stderr": (push.stderr or "")[:300]}
|
||||
_api("PATCH", f"/repos/leora/news/pulls/{number}", {"state": "closed"})
|
||||
relock = relock_news_main()
|
||||
return {
|
||||
"changed": True,
|
||||
"pr_number": number,
|
||||
"pr_url": pr.get("html_url"),
|
||||
"merge_status": merged.get("status"),
|
||||
"merge_status": merge_status,
|
||||
"push_main": push_main,
|
||||
"unlock": unlock.get("status"),
|
||||
"relock": relock.get("status"),
|
||||
"updated_at": updated_at,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user