优化
This commit is contained in:
@@ -1,47 +1,15 @@
|
||||
#!/usr/bin/env sh
|
||||
set -eu
|
||||
|
||||
# 仅用于测试基础设施容器。所有 SQL 均使用 CREATE ... IF NOT EXISTS 或幂等扩展语句,
|
||||
# 不删除已有业务数据;仓库样例数据使用固定 ID 重复写入。
|
||||
MYSQL_CONTAINER="${TEST_MYSQL_CONTAINER:-firstleg-test-mysql}"
|
||||
|
||||
if ! docker inspect --type container "$MYSQL_CONTAINER" >/dev/null 2>&1; then
|
||||
echo "测试 MySQL 容器不存在:$MYSQL_CONTAINER" >&2
|
||||
echo "请先执行 docker compose -f docker-compose-infra.yml up -d" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$(docker inspect -f '{{.State.Running}}' "$MYSQL_CONTAINER")" != "true" ]; then
|
||||
echo "测试 MySQL 容器未运行:$MYSQL_CONTAINER" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for sql_file in \
|
||||
auth/src/main/resources/db/auth.sql \
|
||||
iam/src/main/resources/db/iam.sql \
|
||||
auth/src/main/resources/db/phase1-admin-accounts.sql \
|
||||
iam/src/main/resources/db/phase1-admin-rbac.sql \
|
||||
iam/src/main/resources/db/phase1-onboarding.sql \
|
||||
iam/src/main/resources/db/phase1-customer-profile.sql \
|
||||
iam/src/main/resources/db/phase1-member-permissions.sql \
|
||||
iam/src/main/resources/db/rbac-role-management-v2.sql \
|
||||
iam/src/main/resources/db/phase1-platform-master-data-and-permission-management.sql \
|
||||
order/src/main/resources/db/order.sql \
|
||||
order/src/main/resources/db/phase1-order-extension.sql \
|
||||
order/src/main/resources/db/phase1-masterdata-extension.sql \
|
||||
warehouse/src/main/resources/db/warehouse.sql \
|
||||
warehouse/src/main/resources/db/warehouse-partner.sql \
|
||||
warehouse/src/main/resources/db/warehouse-express-company.sql \
|
||||
warehouse/src/main/resources/db/phase1-warehouse-schema-migration.sql \
|
||||
warehouse/src/main/resources/db/warehouse-seed.sql \
|
||||
file/src/main/resources/db/file.sql
|
||||
do
|
||||
if [ ! -f "$sql_file" ]; then
|
||||
echo "找不到初始化 SQL:$sql_file" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "初始化测试数据库:$sql_file"
|
||||
docker exec -i "$MYSQL_CONTAINER" sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" --default-character-set=utf8mb4' < "$sql_file"
|
||||
# Empty-schema baseline only. Never invoked by Compose/Jenkins automatically.
|
||||
[ "${ALLOW_TEST_SCHEMA_INITIALIZATION:-false}" = "true" ] || { echo 'Explicit TEST SQL authorization required' >&2; exit 2; }
|
||||
: "${TEST_MYSQL_CONTAINER:?Specify the authorized TEST MySQL container}"
|
||||
[ "$#" -eq 2 ] || { echo 'Usage: initialize-test-databases.sh <firstleg-baseline.sql> <overseas-baseline.sql>' >&2; exit 2; }
|
||||
for sql_file in "$1" "$2"; do
|
||||
[ -f "$sql_file" ] || { echo "Missing reviewed baseline: $sql_file" >&2; exit 2; }
|
||||
done
|
||||
[ "$1" != "$2" ] || { echo 'Two distinct reviewed baselines required' >&2; exit 2; }
|
||||
[ "$(docker inspect -f '{{.State.Running}}' "$TEST_MYSQL_CONTAINER")" = 'true' ] || { echo 'TEST MySQL is not running' >&2; exit 1; }
|
||||
for sql_file in "$1" "$2"; do
|
||||
echo "Applying reviewed TEST baseline: $sql_file"
|
||||
docker exec -i "$TEST_MYSQL_CONTAINER" sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" --default-character-set=utf8mb4' < "$sql_file"
|
||||
done
|
||||
|
||||
echo "测试数据库初始化完成。"
|
||||
|
||||
Reference in New Issue
Block a user