fix(5 A5-1/A5-2): bridge commit status posting + enroll custom-html-tiny
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
A5-2: bridge.py now posts Gitea commit statuses on the recipe PR's head SHA: - pending on build trigger (so testme-on-pr.sh sees the run immediately) - success/failure on build finish (so testme-on-pr.sh returns VERDICT=GREEN/RED) Added post_commit_status() using the existing _api() helper + GITEA_TOKEN. Called from process_testme() (pending) and watch_and_reflect() (terminal state). A5-1: added recipe-maintainers/custom-html-tiny to bridge POLL_REPOS in bridge.nix so !testme on custom-html-tiny PRs is picked up by the bridge poller.
This commit is contained in:
@ -160,6 +160,18 @@ def edit_comment(owner, repo, comment_id, body):
|
||||
)
|
||||
|
||||
|
||||
def post_commit_status(owner, repo, sha, state, target_url, description=""):
|
||||
"""Post a Gitea commit status on a recipe PR's head SHA so testme-on-pr.sh can read
|
||||
the verdict from GET /repos/{owner}/{repo}/commits/{sha}/status (Phase 5 / A5-2 fix)."""
|
||||
_api(
|
||||
f"{GITEA_API}/repos/{owner}/{repo}/statuses/{sha}",
|
||||
GITEA_TOKEN,
|
||||
method="POST",
|
||||
data={"state": state, "target_url": target_url,
|
||||
"description": description, "context": "cc-ci/testme"},
|
||||
)
|
||||
|
||||
|
||||
def build_status(num):
|
||||
status, b = _api(f"{DRONE_URL}/api/repos/{CI_REPO}/builds/{num}", DRONE_TOKEN, scheme="Bearer")
|
||||
return b.get("status") if status == 200 and b else None
|
||||
@ -222,6 +234,8 @@ def watch_and_reflect(owner, name, number, num, recipe, sha, comment_id, run_url
|
||||
_t.sleep(15)
|
||||
if comment_id:
|
||||
edit_comment(owner, name, comment_id, result_comment_body(recipe, sha, num, run_url, last))
|
||||
git_state = "success" if last == "success" else "failure"
|
||||
post_commit_status(owner, name, sha, git_state, run_url, f"cc-ci: {git_state}")
|
||||
log(f"reflected outcome build {num} ({recipe} PR #{number}): {last}")
|
||||
|
||||
|
||||
@ -271,6 +285,7 @@ def process_testme(full_name, owner, name, number, user, comment_id, source, qui
|
||||
post_comment(owner, name, number, "cc-ci: failed to start a CI run (see bridge logs).")
|
||||
return None, "trigger failed"
|
||||
run_url = f"{DRONE_URL}/{CI_REPO}/{num}"
|
||||
post_commit_status(owner, name, head["sha"], "pending", run_url, "cc-ci run in progress")
|
||||
mode = " **(--quick: lower-confidence fast lane; does not gate merge)**" if quick else ""
|
||||
# R2/U3: one comment per PR, updated in place. Reuse the existing marked comment if present
|
||||
# (re-`!testme` refreshes it back to the ⏳ placeholder), else post a new one.
|
||||
|
||||
Reference in New Issue
Block a user