From 6047dff71bc68fb963a0c1c26a6c62028dddaf37 Mon Sep 17 00:00:00 2001 From: richblack Date: Fri, 18 Sep 2026 20:00:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=B2=E7=AB=AF=E7=92=B0=E5=A2=83=20v7?= =?UTF-8?q?=EF=BC=9A=E6=94=B6=E5=9B=9E=E7=8F=BE=E8=A1=8C=E9=9B=B2=E7=AB=AF?= =?UTF-8?q?=E6=9C=89=E3=80=81v1=E2=80=93v6=20=E6=BC=8F=E6=94=B6=E7=9A=84?= =?UTF-8?q?=20TELEGRAM=5FCHAT=5FID=EF=BC=8FTELEGRAM=5FBOT=5FTOKEN=EF=BC=88?= =?UTF-8?q?MIRA=5FALLOWED=20=E9=BB=9E=E5=90=8D=E6=94=BE=E8=A1=8C=EF=BC=8CB?= =?UTF-8?q?8=20=E5=85=B6=E9=A4=98=E7=85=A7=E6=93=8B=EF=BC=89=E8=88=87?= =?UTF-8?q?=E5=9B=BA=E5=AE=9A=E5=80=BC=20ISEP=5FDRAIN=3D1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit leo 09-18 貼出現行雲端環境才發現。已驗:chat id 與 leo 貼的相同;bot getMe=總管名片王(雲端工人發訊那支)。test-make-cloud-env.sh 13/13(B8x 反例照樣抓得到)。 Co-Authored-By: Claude Opus 5 --- docs/cloud-env-versions.tsv | 1 + scripts/make-cloud-env.sh | 18 +++++++++++++++++- scripts/test-make-cloud-env.sh | 3 ++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/cloud-env-versions.tsv b/docs/cloud-env-versions.tsv index 8887304..d3a8afc 100644 --- a/docs/cloud-env-versions.tsv +++ b/docs/cloud-env-versions.tsv @@ -8,3 +8,4 @@ v3 2026-09-01 GITEA_TOKEN_CLAUDE_CODE,CLOUDFLARE_API_TOKEN_YOULIN_CC_USE,CLOUDFL v4 2026-09-01 GITEA_TOKEN_CLAUDE_CODE,CLOUDFLARE_API_TOKEN_YOULIN_CC_USE,CLOUDFLARE_ACCOUNT_ID_YOULIN,YOULIN_MCP_OWNER_SECRETS,STAGE_USERNAME_YOULIN,STAGE_PASSWORD_YOULIN,CLOUDFLARE_API_TOKEN_CC_SHIPPING_CORE,CLOUDFLARE_ACCOUNT_ID_GEEK6688,UNCLE6_CF_API_KEY 出貨三站實際部署到 uncle6(ISEP#115 c5577,cb310e9) v5 2026-09-01 GITEA_TOKEN_CLAUDE_CODE,CLOUDFLARE_API_TOKEN_YOULIN_CC_USE,CLOUDFLARE_ACCOUNT_ID_YOULIN,YOULIN_MCP_OWNER_SECRETS,STAGE_USERNAME_YOULIN,STAGE_PASSWORD_YOULIN,CLOUDFLARE_API_TOKEN_CC_SHIPPING_CORE,CLOUDFLARE_ACCOUNT_ID_GEEK6688,UNCLE6_CF_API_KEY,ARCRUN_NS_YOULIN 出貨線實例座標(Arcrun#195,dd86fef/v0.21.0) v6 2026-09-18 GITEA_TOKEN_CLAUDE_CODE,CLOUDFLARE_API_TOKEN_YOULIN_CC_USE,CLOUDFLARE_ACCOUNT_ID_YOULIN,YOULIN_MCP_OWNER_SECRETS,STAGE_USERNAME_YOULIN,STAGE_PASSWORD_YOULIN,CLOUDFLARE_API_TOKEN_CC_SHIPPING_CORE,CLOUDFLARE_ACCOUNT_ID_GEEK6688,UNCLE6_CF_API_KEY,ARCRUN_NS_YOULIN,ARCRUN_NS_UNCLE6,GITHUB_MIRROR_TOKEN,GITHUB_ACCOUNT_NAME 雲端要能出 stage/prod:uncle6 namespace+GitHub 鏡像兩把(InkStoneCo#98 c7739;ISEP#158) +v7 2026-09-18 GITEA_TOKEN_CLAUDE_CODE,CLOUDFLARE_API_TOKEN_YOULIN_CC_USE,CLOUDFLARE_ACCOUNT_ID_YOULIN,YOULIN_MCP_OWNER_SECRETS,STAGE_USERNAME_YOULIN,STAGE_PASSWORD_YOULIN,CLOUDFLARE_API_TOKEN_CC_SHIPPING_CORE,CLOUDFLARE_ACCOUNT_ID_GEEK6688,UNCLE6_CF_API_KEY,ARCRUN_NS_YOULIN,ARCRUN_NS_UNCLE6,GITHUB_MIRROR_TOKEN,GITHUB_ACCOUNT_NAME,TELEGRAM_CHAT_ID,TELEGRAM_BOT_TOKEN,ISEP_DRAIN 收回雲端現行卻不在 v1–v6 的三個:TELEGRAM_CHAT_ID/TELEGRAM_BOT_TOKEN(通知出口,值在 polaris/mira/.env,點名放行)+ISEP_DRAIN=1 固定值(leo 09-18 貼出現行雲端環境才發現漏收) diff --git a/scripts/make-cloud-env.sh b/scripts/make-cloud-env.sh index 7130d37..bb56ab8 100755 --- a/scripts/make-cloud-env.sh +++ b/scripts/make-cloud-env.sh @@ -52,6 +52,20 @@ NEEDED=( # 進清單是因為「拿不到這兩個名字」會讓 prod 那半在雲端**連開閘之後都走不下去**。 GITHUB_MIRROR_TOKEN # GitHub 鏡像 repo 的寫入 token(走標頭,不進網址) GITHUB_ACCOUNT_NAME # 上面那把的帳號名(組鏡像 repo 路徑用,不是機密) + + # ── 雲端工人的通知出口(v7,2026-09-18:leo 貼出現行雲端環境才發現 v1–v6 漏收)── + # 雲端走 Bot API 直送(`scripts/isep-notify`;leo21c 的 notify_leo 已於 08-14 消失,InkStoneCo#110) + TELEGRAM_CHAT_ID # 收訊的 chat id(不是機密) + TELEGRAM_BOT_TOKEN # 通知 bot 的 token +) + +# 🔓 例外:值只住在 polaris/mira/.env、但**不是**打得到 leo21c 的憑證——點名放行,其他照擋(B8) +# Telegram 兩把是通知 bot,不碰任何 CF 帳號;雲端 09-18 前就已手動設了同樣的值。 +MIRA_ALLOWED=(TELEGRAM_CHAT_ID TELEGRAM_BOT_TOKEN) + +# ── 固定值(不是金鑰,產生器直接寫)── +FIXED=( + "ISEP_DRAIN=1" # 雲端工人=接票環境:ticket pick 自帶 --pool、佇列閘不准有票就收工(ISEP#130) ) # # 🔴 這份清單的邊界——加一把之前先問「這把打得到哪個實例」,不是「這把方便嗎」 @@ -109,7 +123,8 @@ PREV_LINE=$(grep -v '^#' "$VERSIONS" | grep -v '^[[:space:]]*$' | tail -2 | head VER=$(printf '%s' "$CUR_LINE" | cut -f1); VER_DATE=$(printf '%s' "$CUR_LINE" | cut -f2) VER_KEYS=$(printf '%s' "$CUR_LINE" | cut -f3); VER_WHY=$(printf '%s' "$CUR_LINE" | cut -f4) PREV_VER=$(printf '%s' "$PREV_LINE" | cut -f1); PREV_KEYS=$(printf '%s' "$PREV_LINE" | cut -f3) -NEEDED_JOINED=$(IFS=,; printf '%s' "${NEEDED[*]}") +FIXED_NAMES=(); for kv in "${FIXED[@]}"; do FIXED_NAMES+=("${kv%%=*}"); done +NEEDED_JOINED=$(IFS=,; printf '%s' "${NEEDED[*]} ${FIXED_NAMES[*]}" | tr ' ' ',') if [ "$NEEDED_JOINED" != "$VER_KEYS" ]; then echo "🔴 NEEDED 與 $VERSIONS 最後一版($VER)的 key 不一致——改了清單就要在 tsv 加一列新版本再跑。" >&2 echo " NEEDED:$NEEDED_JOINED" >&2 @@ -143,6 +158,7 @@ MISSING=() MISSING+=("$n") fi done + for kv in "${FIXED[@]}"; do echo "$kv"; done echo echo "════════ ② Setup script(整段貼,一字不改)════════" cat "$SETUP" diff --git a/scripts/test-make-cloud-env.sh b/scripts/test-make-cloud-env.sh index 14505e7..2fccfbb 100755 --- a/scripts/test-make-cloud-env.sh +++ b/scripts/test-make-cloud-env.sh @@ -35,6 +35,7 @@ NEEDED=() while IFS= read -r l; do NEEDED+=("$l"); done < <( sed -n '/^NEEDED=(/,/^)/p' "$S" | sed -E '1d;$d; s/[[:space:]]*#.*$//; s/[[:space:]]//g' | grep -v '^$') [ "${#NEEDED[@]}" -gt 0 ] || { echo "🔴 從 $S 讀不出 NEEDED,測試本身壞了"; exit 1; } +MIRA_ALLOWED=($(sed -n 's/^MIRA_ALLOWED=(\(.*\))/\1/p' "$S")) echo "清單(只有名字):${NEEDED[*]}" echo @@ -112,7 +113,7 @@ else if r=$(real_src "$n"); then len="${r%% *}"; src="${r#* }" printf ' %-38s → 找得到(長度 %s)來自 %s\n' "$n" "$len" "${src#$BASE/}" - case "$src" in */polaris/mira/.env) prod=$((prod+1)); echo " 🔴 ↑ 這是 leo21c 現役正式環境那份 .env";; esac + case "$src" in */polaris/mira/.env) if printf '%s\n' "${MIRA_ALLOWED[@]}" | grep -qx "$n"; then echo " 🔓 ↑ 點名放行(MIRA_ALLOWED:通知 bot,不碰 CF)"; else prod=$((prod+1)); echo " 🔴 ↑ 這是 leo21c 現役正式環境那份 .env"; fi;; esac else printf ' %-38s → 🔴 這台拿不到\n' "$n"; gone=$((gone+1)) fi