fix(ci): indent python3 -c body so YAML block scalar parses

The python3 inline script in wait-approval was written at column 0 (lines
257-283), but YAML block scalars require content to be more indented than
the parent key. YAML exited the run: | block at the first column-0 line
('import json, re, sys') and tried to parse the python as YAML, failing
with 'could not find expected :' at line 257 — which prevented
pr-iphone-deploy.yml from running at all on PR #13.

Fix: indent the entire python3 -c body to sit inside the run: | block.
Verified locally:
  - yaml.safe_load parses the workflow cleanly (jobs: changes, build-deploy,
    wait-approval; trigger paths removed; both gates wired).
  - The extracted python script, run exactly as act will execute it, returns:
      bot-only            -> PENDING  (was self-merging before)
      bot + reviewer LGTM -> LGTM     (squash-merge still fires)
      bot + reviewer KO   -> KO       (block still fires)
This commit is contained in:
Millian Lamiaux
2026-07-19 22:20:48 +02:00
parent 27f9c6b7b6
commit e255fc3695

View File

@@ -253,34 +253,33 @@ jobs:
COMMENTS=$(curl -s -H "Authorization: token ${GT_TOKEN}" \
"${API}/issues/${PR}/comments?limit=50&page=1")
DECISION=$(python3 - "$COMMENTS" <<'PY'
import json, re, sys
MARKER = "<!-- tabatago:ready-to-test -->"
try:
comments = json.loads(sys.argv[1] or "[]")
except Exception:
comments = []
lgtm = re.compile(r"\bLGTM\b", re.IGNORECASE)
ko = re.compile(r"\bKO\b", re.IGNORECASE)
hit_lgtm = hit_ko = False
for c in comments:
body = c.get("body") or ""
if MARKER in body:
# Skip the bot's own "Ready to test" comment — its body mentions
# LGTM/KO as instructions and would otherwise self-trigger.
continue
if ko.search(body):
hit_ko = True
if lgtm.search(body):
hit_lgtm = True
if hit_ko:
print("KO")
elif hit_lgtm:
print("LGTM")
else:
print("PENDING")
PY
)
DECISION=$(python3 -c '
import json, re, sys
MARKER = "<!-- tabatago:ready-to-test -->"
try:
comments = json.loads(sys.argv[1] or "[]")
except Exception:
comments = []
lgtm = re.compile(r"\bLGTM\b", re.IGNORECASE)
ko = re.compile(r"\bKO\b", re.IGNORECASE)
hit_lgtm = hit_ko = False
for c in comments:
body = c.get("body") or ""
if MARKER in body:
# Skip bot commentstheir body contains LGTM/KO as reviewer
# instructions and would otherwise self-trigger a merge.
continue
if ko.search(body):
hit_ko = True
if lgtm.search(body):
hit_lgtm = True
if hit_ko:
print("KO")
elif hit_lgtm:
print("LGTM")
else:
print("PENDING")
' "$COMMENTS")
case "$DECISION" in
LGTM)