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_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" ] || \

View File

@ -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 "证据未记录四条输入"

View File

@ -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")

View File

@ -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")