From 94d35f0b97831a69096cad641d61f3cbd21ec184 Mon Sep 17 00:00:00 2001 From: lili Date: Wed, 22 Jul 2026 23:56:53 -0700 Subject: [PATCH] fix(release): accept canonical infra hostname --- deploy/import-newapi-pool.sh | 7 +++++-- deploy/tests/test-import-newapi-pool.sh | 5 ++++- game-runtime/tools/newapi_pool_provision.py | 3 ++- game-runtime/tools/test_newapi_pool_provision.py | 4 ++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/deploy/import-newapi-pool.sh b/deploy/import-newapi-pool.sh index e4485034..2bae2cbd 100755 --- a/deploy/import-newapi-pool.sh +++ b/deploy/import-newapi-pool.sh @@ -5,6 +5,7 @@ set -euo pipefail readonly EXPECTED_ACK='IMPORT_NEWAPI_POOL_TO_STAGING' readonly EXPECTED_SOURCE_HOST='mini-infra' +readonly EXPECTED_SOURCE_RUNTIME_HOST='minione-ubuntu-infra' readonly EXPECTED_TARGET_HOST='root@100.64.0.7' readonly MYSQL_CONTAINER='game-staging-mysql' readonly MYSQL_DATABASE='ruoyi-vue-pro' @@ -31,8 +32,10 @@ esac source_hostname="$("$HOSTNAME_BIN" -s 2>/dev/null || "$HOSTNAME_BIN")" source_hostname="${source_hostname%%.*}" -[ "$source_hostname" = "$EXPECTED_SOURCE_HOST" ] || \ - die "只允许在 mini-infra 离线执行,actual=$source_hostname" +case "$source_hostname" in + "$EXPECTED_SOURCE_HOST"|"$EXPECTED_SOURCE_RUNTIME_HOST") ;; + *) die "只允许在 mini-infra 离线执行,actual=$source_hostname" ;; +esac [ "$NEWAPI_POOL_IMPORT_HOST" = "$EXPECTED_TARGET_HOST" ] || \ die "导入目标只允许 $EXPECTED_TARGET_HOST" [ ! -e "$NEWAPI_POOL_IMPORT_EVIDENCE" ] || \ diff --git a/deploy/tests/test-import-newapi-pool.sh b/deploy/tests/test-import-newapi-pool.sh index fde3a50c..8c3f2bc5 100755 --- a/deploy/tests/test-import-newapi-pool.sh +++ b/deploy/tests/test-import-newapi-pool.sh @@ -65,7 +65,10 @@ run_import() { run_import "$TMP_DIR/import-first.evidence" >"$TMP_DIR/first.log" run_import "$TMP_DIR/import-second.evidence" >"$TMP_DIR/second.log" -for evidence in "$TMP_DIR/import-first.evidence" "$TMP_DIR/import-second.evidence"; do +MOCK_HOSTNAME_VALUE=minione-ubuntu-infra run_import "$TMP_DIR/import-runtime-host.evidence" \ + >"$TMP_DIR/runtime-host.log" +for evidence in "$TMP_DIR/import-first.evidence" "$TMP_DIR/import-second.evidence" \ + "$TMP_DIR/import-runtime-host.evidence"; do [ "$(mode_of "$evidence")" = 400 ] || fail "脱敏证据权限不是 400:$evidence" rg -q '^status=PASS$' "$evidence" || fail "证据未记录 PASS" rg -q '^source_row_count=4$' "$evidence" || fail "证据未记录四条输入" diff --git a/game-runtime/tools/newapi_pool_provision.py b/game-runtime/tools/newapi_pool_provision.py index d4606e2b..9a1da68e 100644 --- a/game-runtime/tools/newapi_pool_provision.py +++ b/game-runtime/tools/newapi_pool_provision.py @@ -242,7 +242,8 @@ def validate_provision_request(start: int, count: int, prefix: str, hostname: st 安全字符与 20 字符上限,防止空跑被误记为成功或把不安全文本带入 SQL。 """ short_hostname = hostname.split(".", 1)[0].lower() - if short_hostname != "mini-infra": + # mini-infra 是 SSH/业务别名,minione-ubuntu-infra 是机器实际 hostname;两者指向同一受控宿主。 + if short_hostname not in {"mini-infra", "minione-ubuntu-infra"}: raise ValueError(f"额度池预置只允许在 mini-infra 离线执行,actual={short_hostname}") if start < 1: raise ValueError("--start 必须大于等于 1") diff --git a/game-runtime/tools/test_newapi_pool_provision.py b/game-runtime/tools/test_newapi_pool_provision.py index 092e494b..a7a66933 100755 --- a/game-runtime/tools/test_newapi_pool_provision.py +++ b/game-runtime/tools/test_newapi_pool_provision.py @@ -26,6 +26,10 @@ class ProvisionRequestTest(unittest.TestCase): names = MODULE.validate_provision_request(51, 4, "neice_", "mini-infra") self.assertEqual(names, ["neice_051", "neice_052", "neice_053", "neice_054"]) + def test_accepts_canonical_runtime_hostname(self) -> None: + names = MODULE.validate_provision_request(51, 4, "neice_", "minione-ubuntu-infra") + self.assertEqual(names, ["neice_051", "neice_052", "neice_053", "neice_054"]) + def test_rejects_non_mini_infra_host(self) -> None: with self.assertRaisesRegex(ValueError, "mini-infra"): MODULE.validate_provision_request(51, 4, "neice_", "mini-desktop")