93 lines
2.0 KiB
Bash
93 lines
2.0 KiB
Bash
|
|
#!/bin/sh
|
||
|
|
|
||
|
|
set -eu
|
||
|
|
|
||
|
|
ROOT_DIR=$(CDPATH= cd -- "$(dirname "$0")" && pwd)
|
||
|
|
DATE_STAMP=$(date "+%Y%m%d")
|
||
|
|
RELEASE_ZIP="$ROOT_DIR/ccdi_${DATE_STAMP}.zip"
|
||
|
|
STAGE_DIR="$ROOT_DIR/.deploy/ccdi-release-package"
|
||
|
|
WORK_DIR="$STAGE_DIR/files"
|
||
|
|
BACKEND_JAR_SOURCE="$ROOT_DIR/ruoyi-admin/target/ruoyi-admin.jar"
|
||
|
|
FRONTEND_DIR="$ROOT_DIR/ruoyi-ui"
|
||
|
|
FRONTEND_DIST_DIR="$FRONTEND_DIR/dist"
|
||
|
|
FRONTEND_DIST_ZIP="$WORK_DIR/dist.zip"
|
||
|
|
|
||
|
|
log_info() {
|
||
|
|
printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1"
|
||
|
|
}
|
||
|
|
|
||
|
|
log_error() {
|
||
|
|
printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$1" >&2
|
||
|
|
}
|
||
|
|
|
||
|
|
require_command() {
|
||
|
|
if ! command -v "$1" >/dev/null 2>&1; then
|
||
|
|
log_error "缺少命令: $1"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
reset_stage_dir() {
|
||
|
|
rm -rf "$STAGE_DIR"
|
||
|
|
mkdir -p "$WORK_DIR"
|
||
|
|
}
|
||
|
|
|
||
|
|
build_backend() {
|
||
|
|
log_info "开始构建后端生产 jar"
|
||
|
|
(
|
||
|
|
cd "$ROOT_DIR"
|
||
|
|
mvn -pl ruoyi-admin -am clean package -DskipTests
|
||
|
|
)
|
||
|
|
|
||
|
|
if [ ! -f "$BACKEND_JAR_SOURCE" ]; then
|
||
|
|
log_error "未生成后端 jar: $BACKEND_JAR_SOURCE"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
build_frontend() {
|
||
|
|
log_info "开始构建前端生产 dist"
|
||
|
|
FRONTEND_DIR="$FRONTEND_DIR" zsh -lic 'cd "$FRONTEND_DIR" && nvm use >/dev/null && npm run build:prod'
|
||
|
|
|
||
|
|
if [ ! -f "$FRONTEND_DIST_DIR/index.html" ]; then
|
||
|
|
log_error "前端生产构建失败,未找到: $FRONTEND_DIST_DIR/index.html"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
(
|
||
|
|
cd "$FRONTEND_DIR"
|
||
|
|
zip -qr "$FRONTEND_DIST_ZIP" dist
|
||
|
|
)
|
||
|
|
|
||
|
|
if [ ! -f "$FRONTEND_DIST_ZIP" ]; then
|
||
|
|
log_error "未生成前端压缩包: $FRONTEND_DIST_ZIP"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
package_release() {
|
||
|
|
cp "$BACKEND_JAR_SOURCE" "$WORK_DIR/ruoyi-admin.jar"
|
||
|
|
|
||
|
|
rm -f "$RELEASE_ZIP"
|
||
|
|
(
|
||
|
|
cd "$WORK_DIR"
|
||
|
|
zip -qr "$RELEASE_ZIP" ruoyi-admin.jar dist.zip
|
||
|
|
)
|
||
|
|
|
||
|
|
log_info "上线压缩包已生成: $RELEASE_ZIP"
|
||
|
|
log_info "压缩包根层内容: ruoyi-admin.jar, dist.zip"
|
||
|
|
}
|
||
|
|
|
||
|
|
main() {
|
||
|
|
require_command mvn
|
||
|
|
require_command zsh
|
||
|
|
require_command zip
|
||
|
|
|
||
|
|
reset_stage_dir
|
||
|
|
build_backend
|
||
|
|
build_frontend
|
||
|
|
package_release
|
||
|
|
}
|
||
|
|
|
||
|
|
main "$@"
|