fix(release): accept canonical infra hostname

This commit is contained in:
lili 2026-07-22 23:56:53 -07:00
parent 761a34a121
commit 94d35f0b97
4 changed files with 15 additions and 4 deletions

View File

@ -5,6 +5,7 @@ set -euo pipefail
readonly EXPECTED_ACK='IMPORT_NEWAPI_POOL_TO_STAGING' readonly EXPECTED_ACK='IMPORT_NEWAPI_POOL_TO_STAGING'
readonly EXPECTED_SOURCE_HOST='mini-infra' readonly EXPECTED_SOURCE_HOST='mini-infra'
readonly EXPECTED_SOURCE_RUNTIME_HOST='minione-ubuntu-infra'
readonly EXPECTED_TARGET_HOST='root@100.64.0.7' readonly EXPECTED_TARGET_HOST='root@100.64.0.7'
readonly MYSQL_CONTAINER='game-staging-mysql' readonly MYSQL_CONTAINER='game-staging-mysql'
readonly MYSQL_DATABASE='ruoyi-vue-pro' readonly MYSQL_DATABASE='ruoyi-vue-pro'
@ -31,8 +32,10 @@ esac
source_hostname="$("$HOSTNAME_BIN" -s 2>/dev/null || "$HOSTNAME_BIN")" source_hostname="$("$HOSTNAME_BIN" -s 2>/dev/null || "$HOSTNAME_BIN")"
source_hostname="${source_hostname%%.*}" source_hostname="${source_hostname%%.*}"
[ "$source_hostname" = "$EXPECTED_SOURCE_HOST" ] || \ case "$source_hostname" in
die "只允许在 mini-infra 离线执行,actual=$source_hostname" "$EXPECTED_SOURCE_HOST"|"$EXPECTED_SOURCE_RUNTIME_HOST") ;;
*) die "只允许在 mini-infra 离线执行,actual=$source_hostname" ;;
esac
[ "$NEWAPI_POOL_IMPORT_HOST" = "$EXPECTED_TARGET_HOST" ] || \ [ "$NEWAPI_POOL_IMPORT_HOST" = "$EXPECTED_TARGET_HOST" ] || \
die "导入目标只允许 $EXPECTED_TARGET_HOST" die "导入目标只允许 $EXPECTED_TARGET_HOST"
[ ! -e "$NEWAPI_POOL_IMPORT_EVIDENCE" ] || \ [ ! -e "$NEWAPI_POOL_IMPORT_EVIDENCE" ] || \

View File

@ -65,7 +65,10 @@ run_import() {
run_import "$TMP_DIR/import-first.evidence" >"$TMP_DIR/first.log" run_import "$TMP_DIR/import-first.evidence" >"$TMP_DIR/first.log"
run_import "$TMP_DIR/import-second.evidence" >"$TMP_DIR/second.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" [ "$(mode_of "$evidence")" = 400 ] || fail "脱敏证据权限不是 400:$evidence"
rg -q '^status=PASS$' "$evidence" || fail "证据未记录 PASS" rg -q '^status=PASS$' "$evidence" || fail "证据未记录 PASS"
rg -q '^source_row_count=4$' "$evidence" || fail "证据未记录四条输入" rg -q '^source_row_count=4$' "$evidence" || fail "证据未记录四条输入"

View File

@ -242,7 +242,8 @@ def validate_provision_request(start: int, count: int, prefix: str, hostname: st
安全字符与 20 字符上限,防止空跑被误记为成功或把不安全文本带入 SQL。 安全字符与 20 字符上限,防止空跑被误记为成功或把不安全文本带入 SQL。
""" """
short_hostname = hostname.split(".", 1)[0].lower() 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}") raise ValueError(f"额度池预置只允许在 mini-infra 离线执行,actual={short_hostname}")
if start < 1: if start < 1:
raise ValueError("--start 必须大于等于 1") raise ValueError("--start 必须大于等于 1")

View File

@ -26,6 +26,10 @@ class ProvisionRequestTest(unittest.TestCase):
names = MODULE.validate_provision_request(51, 4, "neice_", "mini-infra") names = MODULE.validate_provision_request(51, 4, "neice_", "mini-infra")
self.assertEqual(names, ["neice_051", "neice_052", "neice_053", "neice_054"]) 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: def test_rejects_non_mini_infra_host(self) -> None:
with self.assertRaisesRegex(ValueError, "mini-infra"): with self.assertRaisesRegex(ValueError, "mini-infra"):
MODULE.validate_provision_request(51, 4, "neice_", "mini-desktop") MODULE.validate_provision_request(51, 4, "neice_", "mini-desktop")