upload theme
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
|
||||
# ================= 基础配置 =================
|
||||
# 1. 修改为你的项目实际路径
|
||||
PROJECT_DIR="/var/www/UI/RustUI"
|
||||
|
||||
# 2. 修改为你的日志页面存放路径(刚才创建的目录)
|
||||
LOG_DIR="/var/www/UI/deploy_logs"
|
||||
LOG_PAGE="${LOG_DIR}/index.html"
|
||||
|
||||
# 3. Nginx 静态文件目录
|
||||
NGINX_ROOT="/var/www/UI/RustUI/dist-docs"
|
||||
|
||||
# 日志输出函数
|
||||
log_info() {
|
||||
echo "[INFO] $1"
|
||||
}
|
||||
|
||||
# =============== 初始化与代码更新 ===============
|
||||
# 创建日志目录并进入项目目录
|
||||
mkdir -p "${LOG_DIR}"
|
||||
cd "${PROJECT_DIR}" || exit 1
|
||||
|
||||
# 获取更新前的版本号
|
||||
PREV_COMMIT=$(git rev-parse HEAD 2>/dev/null || echo "empty")
|
||||
log_info "部署前版本: ${PREV_COMMIT:0:8}"
|
||||
|
||||
# 拉取最新代码
|
||||
log_info "正在拉取最新代码..."
|
||||
git fetch --all
|
||||
git reset --hard origin/main # 如果是 master 分支请改为 master
|
||||
git clean -fd
|
||||
|
||||
# 获取更新后的版本号
|
||||
NEW_COMMIT=$(git rev-parse HEAD)
|
||||
DEPLOY_TIME=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
log_info "部署后版本: ${NEW_COMMIT:0:8}"
|
||||
|
||||
# =============== 安装依赖与构建 ===============
|
||||
log_info "安装依赖..."
|
||||
|
||||
# 检查并修复损坏的 lockfile
|
||||
if [ -f "pnpm-lock.yaml" ]; then
|
||||
if ! pnpm install --dry-run --frozen-lockfile 2>/dev/null; then
|
||||
log_info "检测到 lockfile 损坏,正在重新生成..."
|
||||
rm -f pnpm-lock.yaml
|
||||
rm -rf node_modules
|
||||
fi
|
||||
fi
|
||||
|
||||
pnpm install
|
||||
|
||||
log_info "构建文档..."
|
||||
npm run docs:build
|
||||
|
||||
log_info "部署静态文件到 Nginx 目录..."
|
||||
rm -rf "${NGINX_ROOT:?}"/*
|
||||
# =============== 生成部署历史记录 ===============
|
||||
if [ "${PREV_COMMIT}" != "${NEW_COMMIT}" ]; then
|
||||
log_info "生成部署历史记录..."
|
||||
|
||||
# 确保日志目录存在
|
||||
mkdir -p "${LOG_DIR}"
|
||||
|
||||
# 如果是首次部署,创建 HTML 骨架
|
||||
if [ ! -f "${LOG_PAGE}" ]; then
|
||||
cat > "${LOG_PAGE}" <<HTML
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>代码部署更新记录</title>
|
||||
<style>
|
||||
*{margin:0;padding:0;box-sizing:border-box}
|
||||
body{font-family:system-ui,sans-serif;background:#f5f6f8;padding:20px}
|
||||
.wrap{max-width:950px;margin:0 auto;background:#fff;border-radius:10px;padding:25px;box-shadow:0 2px 8px rgba(0,0,0,0.08)}
|
||||
h1{font-size:20px;color:#222;margin-bottom:20px;border-bottom:1px solid #eee;padding-bottom:10px}
|
||||
.commit-item{padding:15px;border-left:4px solid #2563eb;margin-bottom:12px;background:#f8fafc;border-radius:6px}
|
||||
.commit-hash{font-family:monospace;color:#2563eb;font-weight:bold;font-size:14px}
|
||||
.commit-time{font-size:13px;color:#666;margin:4px 0}
|
||||
.commit-author{font-size:13px;color:#555}
|
||||
.commit-msg{margin:6px 0;color:#333}
|
||||
.file-list{margin-top:8px;font-size:12px;color:#dc2626;line-height:1.5}
|
||||
.empty-tip{color:#999;padding:10px}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<h1>项目部署与提交历史</h1>
|
||||
<div id="commitList">
|
||||
HTML
|
||||
fi
|
||||
|
||||
# 生成本次提交的详细信息区块
|
||||
TEMP_CONTENT=$(git log --pretty=format:" \
|
||||
<div class='commit-item'> \
|
||||
<div class='commit-hash'>%h</div> \
|
||||
<div class='commit-time'>提交时间:%ad</div> \
|
||||
<div class='commit-author'>提交人:%an</div> \
|
||||
<div class='commit-msg'>提交说明:%s</div> \
|
||||
<div class='file-list'>变更文件:$(git diff --name-only ${PREV_COMMIT} ${NEW_COMMIT} | tr '\n' ' ')</div> \
|
||||
</div>" \
|
||||
--date=format:"%Y-%m-%d %H:%M:%S" \
|
||||
"${PREV_COMMIT}..${NEW_COMMIT}")
|
||||
|
||||
# 将新内容追加到页面中(在 </div></body></html> 之前插入)
|
||||
sed -i -e '/<\/div><\/body><\/html>/d' "${LOG_PAGE}"
|
||||
echo "${TEMP_CONTENT}" >> "${LOG_PAGE}"
|
||||
echo "</div></body></html>" >> "${LOG_PAGE}"
|
||||
fi
|
||||
|
||||
log_info "部署完成!"
|
||||
echo "更新记录页面已生成,请访问: http://110.42.255.239/ui"
|
||||
|
||||
Reference in New Issue
Block a user