clouddreamai-cicd-setup 1.5.30 → 1.5.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/templates/scripts/deploy.sh +69 -10
package/package.json
CHANGED
|
@@ -328,7 +328,27 @@ EOF
|
|
|
328
328
|
DB_ENABLED="{{DB_ENABLED}}" # 是否启用数据库自动创建: true/false
|
|
329
329
|
DB_TYPE="{{DB_TYPE}}" # 数据库类型: pgsql/mysql
|
|
330
330
|
|
|
331
|
-
#
|
|
331
|
+
# 自动检测数据库客户端路径
|
|
332
|
+
find_db_client() {
|
|
333
|
+
local CLIENT=$1
|
|
334
|
+
# 常见路径:宝塔、系统默认、Docker 等
|
|
335
|
+
local PATHS=(
|
|
336
|
+
"/www/server/pgsql/bin/$CLIENT"
|
|
337
|
+
"/www/server/mysql/bin/$CLIENT"
|
|
338
|
+
"/usr/bin/$CLIENT"
|
|
339
|
+
"/usr/local/bin/$CLIENT"
|
|
340
|
+
)
|
|
341
|
+
for P in "${PATHS[@]}"; do
|
|
342
|
+
if [ -x "$P" ]; then
|
|
343
|
+
echo "$P"
|
|
344
|
+
return
|
|
345
|
+
fi
|
|
346
|
+
done
|
|
347
|
+
# 最后尝试 PATH 中查找
|
|
348
|
+
command -v "$CLIENT" 2>/dev/null
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
# 创建数据库函数(使用 SSH root 权限通过 sudo 执行)
|
|
332
352
|
create_database() {
|
|
333
353
|
local DB_HOST=$1
|
|
334
354
|
local DB_PORT=$2
|
|
@@ -340,28 +360,67 @@ create_database() {
|
|
|
340
360
|
return
|
|
341
361
|
fi
|
|
342
362
|
|
|
343
|
-
echo "检查并创建数据库: $DB_NAME"
|
|
363
|
+
echo "检查并创建数据库: $DB_NAME (用户: $DB_USER)"
|
|
344
364
|
|
|
345
365
|
if [ "$DB_TYPE" = "pgsql" ]; then
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
366
|
+
local PSQL_CMD=$(find_db_client "psql")
|
|
367
|
+
if [ -z "$PSQL_CMD" ]; then
|
|
368
|
+
echo "❌ 未找到 psql 客户端,跳过数据库创建"
|
|
369
|
+
return
|
|
370
|
+
fi
|
|
371
|
+
|
|
372
|
+
# 使用 sudo -u postgres 执行,利用 peer 认证无需密码
|
|
373
|
+
# 检查并创建用户
|
|
374
|
+
if ! sudo -u postgres $PSQL_CMD -tAc "SELECT 1 FROM pg_roles WHERE rolname='$DB_USER'" | grep -q 1; then
|
|
375
|
+
echo "创建用户 $DB_USER..."
|
|
376
|
+
sudo -u postgres $PSQL_CMD -c "CREATE USER \"$DB_USER\" WITH PASSWORD '$DB_PASS';"
|
|
377
|
+
echo "✓ 用户 $DB_USER 创建成功"
|
|
378
|
+
else
|
|
379
|
+
echo "✓ 用户 $DB_USER 已存在"
|
|
380
|
+
fi
|
|
381
|
+
|
|
382
|
+
# 检查并创建数据库
|
|
383
|
+
if sudo -u postgres $PSQL_CMD -lqt | cut -d \| -f 1 | grep -qw "$DB_NAME"; then
|
|
349
384
|
echo "✓ 数据库 $DB_NAME 已存在"
|
|
350
385
|
else
|
|
351
386
|
echo "创建数据库 $DB_NAME..."
|
|
352
|
-
|
|
387
|
+
sudo -u postgres $PSQL_CMD -c "CREATE DATABASE \"$DB_NAME\" OWNER \"$DB_USER\";"
|
|
353
388
|
echo "✓ 数据库 $DB_NAME 创建成功"
|
|
354
389
|
fi
|
|
355
|
-
|
|
390
|
+
|
|
391
|
+
# 授予权限
|
|
392
|
+
sudo -u postgres $PSQL_CMD -c "GRANT ALL PRIVILEGES ON DATABASE \"$DB_NAME\" TO \"$DB_USER\";"
|
|
393
|
+
|
|
356
394
|
elif [ "$DB_TYPE" = "mysql" ]; then
|
|
357
|
-
|
|
358
|
-
if
|
|
395
|
+
local MYSQL_CMD=$(find_db_client "mysql")
|
|
396
|
+
if [ -z "$MYSQL_CMD" ]; then
|
|
397
|
+
echo "❌ 未找到 mysql 客户端,跳过数据库创建"
|
|
398
|
+
return
|
|
399
|
+
fi
|
|
400
|
+
|
|
401
|
+
# MySQL 使用 root 无密码本地连接(宝塔默认配置)
|
|
402
|
+
# 检查并创建用户和数据库
|
|
403
|
+
if ! $MYSQL_CMD -u root -e "SELECT 1 FROM mysql.user WHERE user='$DB_USER'" 2>/dev/null | grep -q 1; then
|
|
404
|
+
echo "创建用户 $DB_USER..."
|
|
405
|
+
$MYSQL_CMD -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
|
406
|
+
$MYSQL_CMD -u root -e "CREATE USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PASS';"
|
|
407
|
+
echo "✓ 用户 $DB_USER 创建成功"
|
|
408
|
+
else
|
|
409
|
+
echo "✓ 用户 $DB_USER 已存在"
|
|
410
|
+
fi
|
|
411
|
+
|
|
412
|
+
if $MYSQL_CMD -u root -e "SHOW DATABASES" | grep -qw "$DB_NAME"; then
|
|
359
413
|
echo "✓ 数据库 $DB_NAME 已存在"
|
|
360
414
|
else
|
|
361
415
|
echo "创建数据库 $DB_NAME..."
|
|
362
|
-
|
|
416
|
+
$MYSQL_CMD -u root -e "CREATE DATABASE \`$DB_NAME\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
363
417
|
echo "✓ 数据库 $DB_NAME 创建成功"
|
|
364
418
|
fi
|
|
419
|
+
|
|
420
|
+
# 授予权限
|
|
421
|
+
$MYSQL_CMD -u root -e "GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'localhost';"
|
|
422
|
+
$MYSQL_CMD -u root -e "GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'%';"
|
|
423
|
+
$MYSQL_CMD -u root -e "FLUSH PRIVILEGES;"
|
|
365
424
|
fi
|
|
366
425
|
}
|
|
367
426
|
|