From 38945d5c3414eaec619126ed2af1684bf57a2666 Mon Sep 17 00:00:00 2001 From: lsy Date: Mon, 16 Mar 2026 22:32:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DActions=E5=88=9B=E5=BB=BA?= =?UTF-8?q?=20Queue=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 90 ++++++++++++++++++++++++++++++++---- .helloagents/CHANGELOG.md | 3 ++ 2 files changed, 85 insertions(+), 8 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index be796fd..9279a23 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -267,14 +267,51 @@ jobs: CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} run: | echo "检查并创建 Queue..." - QUEUE_LIST=$(bunx wrangler queues list --json --config apps/worker/wrangler.toml 2>/dev/null || echo "[]") - EXISTING_QUEUE=$(echo "$QUEUE_LIST" | jq -r '.[] | select(.name=="usage-events") | .name') + QUEUE_LIST_RAW=$(bunx wrangler queues list --json --config apps/worker/wrangler.toml 2>/dev/null || echo "[]") + QUEUE_EXISTS=$(QUEUE_LIST_RAW="$QUEUE_LIST_RAW" node - <<'NODE' + const raw = process.env.QUEUE_LIST_RAW || ""; + const target = "usage-events"; + const first = raw.search(/[\[{]/); + let jsonText = raw; + if (first >= 0) { + jsonText = raw.slice(first); + } + let list = null; + try { + list = JSON.parse(jsonText); + } catch { + const last = raw.lastIndexOf("]"); + if (first >= 0 && last > first) { + try { + list = JSON.parse(raw.slice(first, last + 1)); + } catch {} + } + } + if (!Array.isArray(list)) { + console.log("unknown"); + process.exit(0); + } + const exists = list.some((item) => item && item.name === target); + console.log(exists ? "true" : "false"); +NODE + ) - if [ -n "$EXISTING_QUEUE" ]; then + if [ "$QUEUE_EXISTS" = "true" ]; then echo "✅ Queue 已存在: usage-events" else echo "创建 Queue: usage-events" - bunx wrangler queues create usage-events --config apps/worker/wrangler.toml + CREATE_OUTPUT=$(bunx wrangler queues create usage-events --config apps/worker/wrangler.toml 2>&1) + CREATE_STATUS=$? + if [ $CREATE_STATUS -eq 0 ]; then + echo "✅ Queue 已创建: usage-events" + else + if echo "$CREATE_OUTPUT" | grep -qi "already exists"; then + echo "✅ Queue 已存在: usage-events" + else + echo "$CREATE_OUTPUT" + exit $CREATE_STATUS + fi + fi fi - name: Create D1 database (init only) @@ -383,14 +420,51 @@ jobs: CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} run: | echo "检查并创建 Queue..." - QUEUE_LIST=$(bunx wrangler queues list --json --config apps/worker/wrangler.toml 2>/dev/null || echo "[]") - EXISTING_QUEUE=$(echo "$QUEUE_LIST" | jq -r '.[] | select(.name=="usage-events") | .name') + QUEUE_LIST_RAW=$(bunx wrangler queues list --json --config apps/worker/wrangler.toml 2>/dev/null || echo "[]") + QUEUE_EXISTS=$(QUEUE_LIST_RAW="$QUEUE_LIST_RAW" node - <<'NODE' + const raw = process.env.QUEUE_LIST_RAW || ""; + const target = "usage-events"; + const first = raw.search(/[\[{]/); + let jsonText = raw; + if (first >= 0) { + jsonText = raw.slice(first); + } + let list = null; + try { + list = JSON.parse(jsonText); + } catch { + const last = raw.lastIndexOf("]"); + if (first >= 0 && last > first) { + try { + list = JSON.parse(raw.slice(first, last + 1)); + } catch {} + } + } + if (!Array.isArray(list)) { + console.log("unknown"); + process.exit(0); + } + const exists = list.some((item) => item && item.name === target); + console.log(exists ? "true" : "false"); +NODE + ) - if [ -n "$EXISTING_QUEUE" ]; then + if [ "$QUEUE_EXISTS" = "true" ]; then echo "✅ Queue 已存在: usage-events" else echo "创建 Queue: usage-events" - bunx wrangler queues create usage-events --config apps/worker/wrangler.toml + CREATE_OUTPUT=$(bunx wrangler queues create usage-events --config apps/worker/wrangler.toml 2>&1) + CREATE_STATUS=$? + if [ $CREATE_STATUS -eq 0 ]; then + echo "✅ Queue 已创建: usage-events" + else + if echo "$CREATE_OUTPUT" | grep -qi "already exists"; then + echo "✅ Queue 已存在: usage-events" + else + echo "$CREATE_OUTPUT" + exit $CREATE_STATUS + fi + fi fi - name: Create or verify D1 Database diff --git a/.helloagents/CHANGELOG.md b/.helloagents/CHANGELOG.md index 4320d87..b49eba9 100644 --- a/.helloagents/CHANGELOG.md +++ b/.helloagents/CHANGELOG.md @@ -190,6 +190,9 @@ ### 修复 +- **[deploy-workflow]**: 队列检查改为 Node 解析并容错非 JSON 输出 — by lsy + - 方案: [202603162220_deploy-queue-json-parse](archive/2026-03/202603162220_deploy-queue-json-parse/) + - 决策: deploy-queue-json-parse#D001(队列列表解析方式选择) - **[admin-ui]**: Toast 通知固定右上并带进度条,弹窗改为全屏遮罩,筛选标题横排 — by lsy - 方案: [202603160049_modal-toast-search-fixes](archive/2026-03/202603160049_modal-toast-search-fixes/) - 决策: modal-toast-search-fixes#D001(通知统一为右上 Toast)