- 新增 _get_gitea_config.py 从 YAML 读取 URL/repo/token
- _common.sh 改为通过 eval python 脚本加载配置
- GITEA_CICD_SETUP.md / DEV_AGENT.md / QE_AGENT.md 更新文档
- CI 工作流改用 ${{ gitea.server_url }} / ${{ gitea.repository }}
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
"""Create a Gitea issue when CI fails. Called from ci.yml on failure."""
|
||||
"""Create a Gitea issue when CI fails. Called from CI workflows."""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
@@ -6,9 +6,6 @@ import os
|
||||
import urllib.request
|
||||
import urllib.error
|
||||
|
||||
GITEA_URL = "https://git.zywl.me"
|
||||
REPO = "pzhang_zywl/document_analyzer"
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
@@ -16,14 +13,21 @@ def main():
|
||||
parser.add_argument("--branch", required=True)
|
||||
parser.add_argument("--run", required=True)
|
||||
parser.add_argument("--message", required=True)
|
||||
parser.add_argument("--gitea-url", default=os.environ.get("GITEA_URL", ""),
|
||||
help="Gitea instance URL (default: $GITEA_URL)")
|
||||
parser.add_argument("--repo", default=os.environ.get("GITEA_REPO", ""),
|
||||
help="Repo path e.g. org/repo (default: $GITEA_REPO)")
|
||||
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("--workflow", default="CI", help="Workflow name (default: CI)")
|
||||
parser.add_argument("--labels", default="ci-failure",
|
||||
help="Comma-separated labels for the issue (default: ci-failure)")
|
||||
help="Comma-separated labels (default: ci-failure)")
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.gitea_url or not args.repo:
|
||||
parser.error("--gitea-url and --repo are required (or set GITEA_URL and GITEA_REPO)")
|
||||
|
||||
sha_short = args.sha[:7]
|
||||
run_url = f"{GITEA_URL}/{REPO}/actions/runs/{args.run}"
|
||||
run_url = f"{args.gitea_url}/{args.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]}"
|
||||
@@ -45,7 +49,7 @@ def main():
|
||||
"labels": labels,
|
||||
}).encode("utf-8")
|
||||
|
||||
url = f"{GITEA_URL}/api/v1/repos/{REPO}/issues"
|
||||
url = f"{args.gitea_url}/api/v1/repos/{args.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")
|
||||
|
||||
Reference in New Issue
Block a user