180 lines
4.2 KiB
Bash
180 lines
4.2 KiB
Bash
#!/bin/bash
|
|
|
|
# 测试目录创建和复制逻辑
|
|
|
|
set -e
|
|
|
|
echo "=== 测试目录创建和复制逻辑 ==="
|
|
|
|
# 模拟变量
|
|
SELECTED_SERVICE_ARCH="dual"
|
|
TARGET_PLATFORM="linux/arm64"
|
|
MULTI_PLATFORM=false
|
|
|
|
# 更新导出目录名称以包含平台信息
|
|
if [[ "$MULTI_PLATFORM" == "true" ]]; then
|
|
EXPORT_DIR="dms-compliance-${SELECTED_SERVICE_ARCH}-multiplatform-$(date +%Y%m%d-%H%M%S)"
|
|
else
|
|
platform_suffix=$(echo "$TARGET_PLATFORM" | sed 's/linux\///g' | sed 's/\//-/g')
|
|
EXPORT_DIR="dms-compliance-${SELECTED_SERVICE_ARCH}-${platform_suffix}-$(date +%Y%m%d-%H%M%S)"
|
|
fi
|
|
ARCHIVE_NAME="$EXPORT_DIR.tar.gz"
|
|
|
|
echo "[信息] 最终输出目录: $EXPORT_DIR"
|
|
|
|
# 创建最终导出目录
|
|
rm -rf "$EXPORT_DIR"
|
|
mkdir -p "$EXPORT_DIR"
|
|
|
|
echo "[步骤 1/4] 复制项目文件..."
|
|
|
|
# 创建临时构建目录
|
|
TEMP_BUILD_DIR=$(mktemp -d)
|
|
trap "rm -rf $TEMP_BUILD_DIR" EXIT
|
|
|
|
# 复制核心目录(排除缓存和临时文件)
|
|
echo "[信息] 复制核心目录..."
|
|
mkdir -p "$TEMP_BUILD_DIR"/{ddms_compliance_suite,custom_stages,custom_testcases,templates,static,assets}
|
|
|
|
# 创建测试文件
|
|
echo "# Test content" > "$TEMP_BUILD_DIR/requirements.txt"
|
|
echo "# Test API server" > "$TEMP_BUILD_DIR/api_server.py"
|
|
echo "# Test history viewer" > "$TEMP_BUILD_DIR/history_viewer.py"
|
|
echo "# Test ddms suite" > "$TEMP_BUILD_DIR/ddms_compliance_suite/test.py"
|
|
|
|
echo "[步骤 2/4] 创建 Dockerfile..."
|
|
cd "$TEMP_BUILD_DIR"
|
|
|
|
# 创建测试Dockerfile
|
|
cat > "Dockerfile" << 'EOF'
|
|
FROM python:3.11-alpine
|
|
WORKDIR /app
|
|
COPY . .
|
|
EXPOSE 5050 5051
|
|
CMD ["echo", "Test dockerfile"]
|
|
EOF
|
|
|
|
# 创建supervisor配置
|
|
cat > "supervisord.conf" << 'EOF'
|
|
[supervisord]
|
|
nodaemon=true
|
|
|
|
[program:api_server]
|
|
command=python api_server.py
|
|
|
|
[program:history_viewer]
|
|
command=python history_viewer.py
|
|
EOF
|
|
|
|
cd ..
|
|
|
|
echo "[步骤 3/4] 复制构建文件..."
|
|
# 确保目标目录存在
|
|
mkdir -p "$EXPORT_DIR"
|
|
cp -r "$TEMP_BUILD_DIR"/* "$EXPORT_DIR/"
|
|
|
|
echo "[步骤 4/4] 创建配置文件..."
|
|
|
|
# 创建Docker Compose文件
|
|
cat > "$EXPORT_DIR/docker-compose.yml" << EOF
|
|
version: '3.8'
|
|
|
|
services:
|
|
dms-compliance:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
platforms:
|
|
- $TARGET_PLATFORM
|
|
image: compliance-dms-multiplatform:latest
|
|
container_name: dms-compliance-tool
|
|
ports:
|
|
- "5050:5050" # API服务器端口
|
|
- "5051:5051" # 历史查看器端口
|
|
environment:
|
|
- PYTHONPATH=/app
|
|
- TZ=Asia/Shanghai
|
|
- FLASK_ENV=production
|
|
- PYTHONUNBUFFERED=1
|
|
volumes:
|
|
- ./uploads:/app/uploads
|
|
- ./logs:/app/logs
|
|
- ./test_reports:/app/test_reports
|
|
- ./config:/app/config:ro
|
|
restart: unless-stopped
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:5050/"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
networks:
|
|
- dms-network
|
|
|
|
networks:
|
|
dms-network:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
uploads:
|
|
logs:
|
|
test_reports:
|
|
config:
|
|
EOF
|
|
|
|
# 创建启动脚本
|
|
cat > "$EXPORT_DIR/start.sh" << 'EOF'
|
|
#!/bin/bash
|
|
echo "=== DMS合规性测试工具启动脚本 ==="
|
|
echo "这是一个测试脚本"
|
|
EOF
|
|
|
|
chmod +x "$EXPORT_DIR/start.sh"
|
|
|
|
# 创建README
|
|
cat > "$EXPORT_DIR/README.md" << EOF
|
|
# DMS合规性测试工具 - 测试部署包
|
|
|
|
## 系统信息
|
|
|
|
- **架构**: 双服务架构 - API服务器(5050) + 历史查看器(5051)
|
|
- **端口**: 5050,5051
|
|
- **目标平台**: ARM64 (aarch64) - Apple M1/M2, ARM 64位
|
|
- **构建时间**: $(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
## 测试成功
|
|
|
|
目录创建和文件复制逻辑正常工作。
|
|
EOF
|
|
|
|
# 验证文件结构
|
|
echo ""
|
|
echo "=== 验证文件结构 ==="
|
|
echo "导出目录内容:"
|
|
ls -la "$EXPORT_DIR"
|
|
echo ""
|
|
echo "核心文件检查:"
|
|
for file in Dockerfile docker-compose.yml start.sh README.md requirements.txt api_server.py history_viewer.py supervisord.conf; do
|
|
if [[ -f "$EXPORT_DIR/$file" ]]; then
|
|
echo "✅ $file"
|
|
else
|
|
echo "❌ $file (缺失)"
|
|
fi
|
|
done
|
|
|
|
# 创建压缩包
|
|
echo ""
|
|
echo "[信息] 创建压缩包..."
|
|
tar -czf "$ARCHIVE_NAME" "$EXPORT_DIR"
|
|
|
|
# 清理临时目录
|
|
rm -rf "$EXPORT_DIR"
|
|
|
|
# 显示结果
|
|
echo ""
|
|
echo "=== 测试完成 ==="
|
|
echo "[成功] 测试部署包已创建: $ARCHIVE_NAME"
|
|
echo "[信息] 文件大小: $(du -h "$ARCHIVE_NAME" | cut -f1)"
|
|
echo ""
|
|
echo "目录创建和复制逻辑测试成功!"
|