From e73383c326f17d29ab4eb032412bfe188e017580 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 4 Jun 2026 21:59:35 +0800 Subject: [PATCH] fix(ci): remove secret env from agent market watch --- .gitea/workflows/agent-market-watch.yaml | 62 ++++++++---------------- 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/.gitea/workflows/agent-market-watch.yaml b/.gitea/workflows/agent-market-watch.yaml index 93809434..3605e88d 100644 --- a/.gitea/workflows/agent-market-watch.yaml +++ b/.gitea/workflows/agent-market-watch.yaml @@ -496,11 +496,9 @@ jobs: print(json.dumps(summary, ensure_ascii=False, sort_keys=True)) PY - - name: Notify Telegram on actionable change or failure + - name: Summarize actionable change or failure if: always() env: - TG_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} - OPENCLAW_TG_BOT_TOKEN: ${{ secrets.OPENCLAW_TG_BOT_TOKEN }} TG_CHAT_ID: ${{ env.TELEGRAM_ALERT_CHAT_ID }} JOB_STATUS: ${{ job.status }} CANDIDATE_COUNT: ${{ steps.watch.outputs.candidate_count }} @@ -533,22 +531,11 @@ jobs: exit 0 fi - TOKEN="${TG_BOT_TOKEN:-${OPENCLAW_TG_BOT_TOKEN:-}}" - if [ -z "$TOKEN" ] || [ -z "${TG_CHAT_ID:-}" ]; then - echo "Telegram secret missing; skip market watch notification." - exit 0 - fi - python3 - <<'PY' import os - import urllib.parse - import urllib.request from datetime import datetime - from html import escape from zoneinfo import ZoneInfo - token = os.environ.get("TG_BOT_TOKEN") or os.environ.get("OPENCLAW_TG_BOT_TOKEN") - chat_id = os.environ.get("TG_CHAT_ID", "") status = os.environ.get("JOB_STATUS", "unknown") changed = os.environ.get("CHANGED_CANDIDATES") or "0" queue = os.environ.get("INTEGRATION_QUEUE_COUNT") or "0" @@ -571,31 +558,24 @@ jobs: generated = datetime.now(ZoneInfo("Asia/Taipei")).strftime("%Y-%m-%d %H:%M") title = "Agent Market Watch 需要複核" if status == "success" else "Agent Market Watch 執行失敗" - message = ( - f"[{escape(title)}]\n" - f"時間:{escape(generated)}\n" - f"狀態:{escape(status)}\n" - f"候選:{escape(candidates)};來源:{escape(sources)}\n" - f"變動候選:{escape(changed)};整合佇列:{escape(queue)};來源失敗:{escape(failures)}\n\n" - f"Review:已審 {escape(reviewed)};擋下整合 {escape(blocked)};成本批准需求 {escape(cost_approvals)};依賴批准需求 {escape(dependency_approvals)}\n\n" - f"Discovery:unique repo {escape(discovery_repos)};需人工分類 {escape(discovery_manual)};新未分類 {escape(discovery_new)};已分類 {escape(classified_repos)};建議 watch {escape(recommended_watch_additions)}\n\n" - f"Promotion:scorecard prescreen eligible {escape(watch_promotion_eligible)};priority upgrade approved {escape(watch_promotion_approved)};replay approved {escape(replay_candidates_approved)}\n\n" - "政策:此 workflow 只建立市場觀察、整合審查、discovery intake/classification 訊號,不批准 SDK 安裝、付費 API、replay、shadow/canary 或 OpenClaw 取代。\n" - f"Log:{escape(actions_url)}" - ) - payload = urllib.parse.urlencode( - { - "chat_id": chat_id, - "text": message, - "parse_mode": "HTML", - "disable_web_page_preview": "true", - } - ).encode() - request = urllib.request.Request( - f"https://api.telegram.org/bot{token}/sendMessage", - data=payload, - method="POST", - ) - with urllib.request.urlopen(request, timeout=10) as response: # noqa: S310 - response.read() + lines = [ + f"## {title}", + "", + f"- 時間:`{generated}`", + f"- 狀態:`{status}`", + f"- 候選 / 來源:`{candidates}` / `{sources}`", + f"- 變動候選 / 整合佇列 / 來源失敗:`{changed}` / `{queue}` / `{failures}`", + f"- Review:已審 `{reviewed}`;擋下整合 `{blocked}`;成本批准需求 `{cost_approvals}`;依賴批准需求 `{dependency_approvals}`", + f"- Discovery:unique repo `{discovery_repos}`;需人工分類 `{discovery_manual}`;新未分類 `{discovery_new}`;已分類 `{classified_repos}`;建議 watch `{recommended_watch_additions}`", + f"- Promotion:scorecard prescreen eligible `{watch_promotion_eligible}`;priority upgrade approved `{watch_promotion_approved}`;replay approved `{replay_candidates_approved}`", + "", + "政策:此 workflow 只建立市場觀察、整合審查、discovery intake/classification 訊號,不批准 SDK 安裝、付費 API、replay、shadow/canary 或 OpenClaw 取代。", + f"Log:{actions_url}", + ] + summary = "\n".join(lines) + "\n" + print(summary) + step_summary_path = os.environ.get("GITHUB_STEP_SUMMARY") + if step_summary_path: + with open(step_summary_path, "a", encoding="utf-8") as handle: + handle.write(summary) PY