Files
document_analyzer/scripts/create_failure_issue.py
T
pzhang_zywl fec4c09ee0
CI / test (push) Successful in 8s
sync: update all skills from latest workspace code
doc_parser_skill:
- New: verify_flowchart.py (flowchart validation)
- Updated: LLM.py (multi-provider: DeepSeek + DashScope)
- Updated: image_parser.py (logic tree support, external prompts)
- Updated: SKILL.md, prompts/image_prompt.md

conflict_detection_skill:
- Updated: LLM.py (multi-provider sync)
- Updated: detect_conflicts.py (logic tree text conversion)

ir_generation_skill:
- Replaced old scripts/LLM.py + ir_generator.py with standalone project
- New: main.py, config.py, step1-3_*.py, ensemble_merge.py
- New: prompts/, tests/ subdirectories

tests:
- New: acceptance/ test suite with schema validation
- Fixed: conftest no longer globally skips non-acceptance tests
- Updated: test_sample.py for new ir_generation structure

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 22:45:08 +08:00

65 lines
2.2 KiB
Python

"""Create a Gitea issue when CI fails. Called from ci.yml on failure."""
import argparse
import json
import os
import urllib.request
import urllib.error
GITEA_URL = "http://localhost:3000"
REPO = "pzhang_zywl/document_analyzer"
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--sha", required=True)
parser.add_argument("--branch", required=True)
parser.add_argument("--run", required=True)
parser.add_argument("--message", required=True)
parser.add_argument("--api-token", default=os.environ.get("GITEA_API_TOKEN", ""))
parser.add_argument("--workflow", default="CI", help="Workflow name that triggered this (default: CI)")
parser.add_argument("--labels", default="ci-failure,agent-task",
help="Comma-separated labels for the issue (default: ci-failure,agent-task)")
args = parser.parse_args()
sha_short = args.sha[:7]
run_url = f"{GITEA_URL}/{REPO}/actions/runs/{args.run}"
labels = [l.strip() for l in args.labels.split(",") if l.strip()]
title = f"[{args.workflow}] Failure: {args.message[:80]}"
body = (
f"## {args.workflow} 测试失败\n\n"
f"- **Commit:** {sha_short}\n"
f"- **Branch:** {args.branch}\n"
f"- **工作流运行:** {run_url}\n\n"
f"请检查上述链接查看失败详情。\n\n"
f"### 下一步\n"
f"- [ ] 分析失败原因\n"
f"- [ ] 修复代码\n"
f"- [ ] 提交 PR 触发 CI 重测"
)
payload = json.dumps({
"title": title,
"body": body,
"labels": labels,
}).encode("utf-8")
url = f"{GITEA_URL}/api/v1/repos/{REPO}/issues"
req = urllib.request.Request(url, data=payload, method="POST")
req.add_header("Authorization", f"token {args.api_token}")
req.add_header("Content-Type", "application/json")
try:
with urllib.request.urlopen(req) as resp:
data = json.loads(resp.read())
print(f"Issue created: {data.get('html_url', data.get('url', 'unknown'))}")
except urllib.error.HTTPError as e:
print(f"Failed to create issue: {e.code} {e.reason}")
print(e.read().decode())
raise
if __name__ == "__main__":
main()