适配部署压缩包目录结构
This commit is contained in:
@@ -78,26 +78,26 @@ extract_release_package() {
|
|||||||
|
|
||||||
assert_single_jar() {
|
assert_single_jar() {
|
||||||
search_dir="$1"
|
search_dir="$1"
|
||||||
count=$(find "$search_dir" -type f -name '*.jar' | wc -l | tr -d ' ')
|
count=$(find "$search_dir" -type f -name '*.jar' ! -path '*/__MACOSX/*' ! -name '._*' | wc -l | tr -d ' ')
|
||||||
|
|
||||||
if [ "$count" -ne 1 ]; then
|
if [ "$count" -ne 1 ]; then
|
||||||
log_error "后端 jar 数量不正确,期望 1 个,实际 $count 个"
|
log_error "后端 jar 数量不正确,期望 1 个,实际 $count 个"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "$search_dir" -type f -name '*.jar' | head -n 1
|
find "$search_dir" -type f -name '*.jar' ! -path '*/__MACOSX/*' ! -name '._*' | head -n 1
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_single_dist_zip() {
|
assert_single_dist_zip() {
|
||||||
search_dir="$1"
|
search_dir="$1"
|
||||||
count=$(find "$search_dir" -type f -name 'dist.zip' | wc -l | tr -d ' ')
|
count=$(find "$search_dir" -type f -name 'dist.zip' ! -path '*/__MACOSX/*' ! -name '._*' | wc -l | tr -d ' ')
|
||||||
|
|
||||||
if [ "$count" -ne 1 ]; then
|
if [ "$count" -ne 1 ]; then
|
||||||
log_error "前端 dist.zip 数量不正确,期望 1 个,实际 $count 个"
|
log_error "前端 dist.zip 数量不正确,期望 1 个,实际 $count 个"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find "$search_dir" -type f -name 'dist.zip' | head -n 1
|
find "$search_dir" -type f -name 'dist.zip' ! -path '*/__MACOSX/*' ! -name '._*' | head -n 1
|
||||||
}
|
}
|
||||||
|
|
||||||
backup_backend_jar() {
|
backup_backend_jar() {
|
||||||
|
|||||||
@@ -55,18 +55,21 @@ EOF
|
|||||||
create_release_zip() {
|
create_release_zip() {
|
||||||
release_dir="$1"
|
release_dir="$1"
|
||||||
release_zip_name="$2"
|
release_zip_name="$2"
|
||||||
jar_name="$3"
|
|
||||||
|
|
||||||
mkdir -p "$release_dir/package/frontend_payload/dist"
|
mkdir -p "$release_dir/package/deploy" "$release_dir/package/__MACOSX/deploy"
|
||||||
printf 'new-jar\n' > "$release_dir/package/$jar_name"
|
mkdir -p "$release_dir/package/frontend_payload/dist" "$release_dir/package/frontend_payload/__MACOSX/dist"
|
||||||
|
printf 'new-jar\n' > "$release_dir/package/deploy/ruoyi-admin.jar"
|
||||||
|
printf 'macos-meta\n' > "$release_dir/package/__MACOSX/deploy/._ruoyi-admin.jar"
|
||||||
printf '<html>new</html>\n' > "$release_dir/package/frontend_payload/dist/index.html"
|
printf '<html>new</html>\n' > "$release_dir/package/frontend_payload/dist/index.html"
|
||||||
|
printf 'macos-meta\n' > "$release_dir/package/frontend_payload/__MACOSX/dist/._index.html"
|
||||||
(
|
(
|
||||||
cd "$release_dir/package/frontend_payload"
|
cd "$release_dir/package/frontend_payload"
|
||||||
zip -qr "$release_dir/package/dist.zip" dist
|
zip -qr "$release_dir/package/dist.zip" dist __MACOSX
|
||||||
)
|
)
|
||||||
|
mv "$release_dir/package/dist.zip" "$release_dir/package/deploy/dist.zip"
|
||||||
(
|
(
|
||||||
cd "$release_dir/package"
|
cd "$release_dir/package"
|
||||||
zip -qr "$release_dir/$release_zip_name" "$jar_name" dist.zip
|
zip -qr "$release_dir/$release_zip_name" deploy __MACOSX
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,7 +94,7 @@ prepare_release_dir() {
|
|||||||
printf '<html>old</html>\n' > "$release_dir/frontend/dist/index.html"
|
printf '<html>old</html>\n' > "$release_dir/frontend/dist/index.html"
|
||||||
|
|
||||||
create_fake_java "$release_dir/fake-java-bin/java"
|
create_fake_java "$release_dir/fake-java-bin/java"
|
||||||
create_release_zip "$release_dir" "loan-pricing-release.zip" "app.jar"
|
create_release_zip "$release_dir" "deploy.zip"
|
||||||
cp "$SCRIPT_UNDER_TEST" "$release_dir/deploy_from_package.sh"
|
cp "$SCRIPT_UNDER_TEST" "$release_dir/deploy_from_package.sh"
|
||||||
perl -0pi -e "s#JAVA_BIN=\"/home/webapp/env/java/bin/java\"#JAVA_BIN=\"$release_dir/fake-java-bin/java\"#" \
|
perl -0pi -e "s#JAVA_BIN=\"/home/webapp/env/java/bin/java\"#JAVA_BIN=\"$release_dir/fake-java-bin/java\"#" \
|
||||||
"$release_dir/deploy_from_package.sh"
|
"$release_dir/deploy_from_package.sh"
|
||||||
@@ -151,7 +154,7 @@ test_multiple_release_zip_should_fail() {
|
|||||||
trap 'cleanup_release_dir "$release_dir"' EXIT INT TERM
|
trap 'cleanup_release_dir "$release_dir"' EXIT INT TERM
|
||||||
|
|
||||||
prepare_release_dir "$release_dir" "$backend_port"
|
prepare_release_dir "$release_dir" "$backend_port"
|
||||||
cp "$release_dir/loan-pricing-release.zip" "$release_dir/loan-pricing-release-copy.zip"
|
cp "$release_dir/deploy.zip" "$release_dir/deploy-copy.zip"
|
||||||
|
|
||||||
if (
|
if (
|
||||||
cd "$release_dir"
|
cd "$release_dir"
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# 生产一键部署脚本参考 deploy.zip 调整实施记录
|
||||||
|
|
||||||
|
## 参考压缩包
|
||||||
|
- 参考文件:`deploy/deploy.zip`
|
||||||
|
- 已核对压缩包结构:
|
||||||
|
- `deploy/ruoyi-admin.jar`
|
||||||
|
- `deploy/dist.zip`
|
||||||
|
- `__MACOSX/deploy/._ruoyi-admin.jar`
|
||||||
|
|
||||||
|
## 问题原因
|
||||||
|
- 原脚本按 `find ... -name '*.jar'` 统计后端产物
|
||||||
|
- 参考压缩包中包含 `__MACOSX/deploy/._ruoyi-admin.jar`
|
||||||
|
- 该文件会被误算成第二个 `jar`,导致脚本报错“后端 jar 数量不正确,期望 1 个,实际 2 个”
|
||||||
|
|
||||||
|
## 修改内容
|
||||||
|
- 更新 `bin/prod/deploy_from_package.sh`
|
||||||
|
- 在后端 `jar` 和前端 `dist.zip` 搜索时忽略:
|
||||||
|
- `__MACOSX` 目录下文件
|
||||||
|
- `._*` 资源分叉文件
|
||||||
|
- 更新 `bin/prod/deploy_from_package_test.sh`
|
||||||
|
- 自测发布包结构改为贴近真实 `deploy/deploy.zip`:
|
||||||
|
- 外层为 `deploy/ruoyi-admin.jar`
|
||||||
|
- 外层为 `deploy/dist.zip`
|
||||||
|
- 带 `__MACOSX` 资源文件
|
||||||
|
- 内层 `dist.zip` 也带 `dist/` 和 `__MACOSX/`
|
||||||
|
|
||||||
|
## 验证结果
|
||||||
|
- 已执行 `sh -n bin/prod/deploy_from_package.sh`
|
||||||
|
- 已执行 `sh bin/prod/deploy_from_package_test.sh`
|
||||||
|
- 自测结果确认:
|
||||||
|
- 脚本可正确识别参考压缩包结构
|
||||||
|
- `__MACOSX` 和 `._*` 不会再被误判为有效发布产物
|
||||||
|
- 正常部署链路仍然通过
|
||||||
Reference in New Issue
Block a user