# Docker Hexo Static Blog v0.0.3 - 完整测试指南 > **📅 最新更新**: 2025年5月30日 - 所有 Windows 和 Linux 测试脚本已完成路径修正,现在支持从任意目录执行,具有更好的可移植性和稳定性。Linux 平台同步实现了与 Windows 平台相同的路径修正改进。 ## 概述 本测试指南提供了基于实际测试脚本框架的完整测试流程,支持两个测试平台: - **Windows 11 + Docker Desktop** (使用 PowerShell 测试套件) - **N305 NAS + Linux Docker** (使用 Bash 测试套件) ## v0.0.3 版本主要新特性 本版本重点改进了日志管理和权限控制: - ✅ **定期日志轮转功能** - 每30分钟自动检查日志大小 - ✅ **修复 Git Hook 日志权限** - 确保 hexo 用户可以写入部署日志 - ✅ **增强的日志管理** - 智能备份和旧日志清理 - ✅ **改进的错误处理** - 更详细的日志记录和错误恢复 - ✅ **权限动态管理** - 自动修复容器内文件权限问题 ## 测试环境要求 ### 测试环境要求 ### Windows 11 测试环境 - **操作系统**: Windows 11 专业版或企业版 - **Docker**: Docker Desktop 4.15+ (支持 Linux 容器) - **PowerShell**: PowerShell 5.1+ 或 PowerShell Core 7+ - **内存**: 至少 4GB 可用内存 - **磁盘**: 至少 10GB 可用磁盘空间 - **网络**: 端口 8888 和 2222 可用 (默认端口已更新) - **权限**: 管理员权限或 Docker 使用权限 > **端口更新**: 默认 HTTP 端口已从 8080 更新为 8888,避免常见的端口冲突 ### N305 NAS Linux 测试环境 - **操作系统**: Linux (Ubuntu 20.04+, Debian 11+, 或兼容系统) - **Docker**: Docker Engine 20.10+ - **Shell**: Bash 4.0+ - **内存**: 至少 2GB 可用内存 - **磁盘**: 至少 5GB 可用磁盘空间 - **权限**: SSH 访问权限和 sudo 权限 ## 自动化测试框架 本项目提供了完整的自动化测试框架,包含以下测试脚本: ### Windows PowerShell 测试套件 位置:`test/v0.0.3/windows/` - **start.ps1** - 完整测试套件启动脚本,支持一键测试 - **build_test.ps1** - Docker 镜像构建测试 - **run_test.ps1** - 容器运行和基础功能测试 - **functional_test.ps1** - HTTP/SSH/健康检查等功能测试 - **log_rotation_test.ps1** - v0.0.3 新增的日志轮转功能测试 - **cleanup_test.ps1** - 测试环境清理 - **test_paths.ps1** - 路径验证工具脚本(新增) - **README.md** - 详细使用说明文档(新增) - **PATH_FIXES_REPORT.md** - 路径修正报告(新增) > **重要更新**: 所有 Windows 测试脚本已完成路径修正,现在支持从任意目录执行,并确保所有文件操作在正确的测试目录内进行。 #### 路径修正改进 - ✅ **工作目录自动切换**: 所有脚本现在自动切换到脚本所在目录 - ✅ **相对路径标准化**: Dockerfile 路径、日志目录、测试数据目录统一使用相对路径 - ✅ **PowerShell 语法修正**: param() 块位置已修正,确保参数正确传递 - ✅ **卷挂载路径修正**: Docker 卷挂载使用正确的绝对路径 - ✅ **SSH 密钥路径统一**: 所有测试中的 SSH 密钥路径已统一 ### Linux Bash 测试套件 位置:`test/v0.0.3/linux/` - **start.sh** - 完整测试套件启动脚本,支持一键测试 - **build_test.sh** - Docker 镜像构建测试 - **run_test.sh** - 容器运行和基础功能测试 - **functional_test.sh** - HTTP/SSH/健康检查等功能测试 - **log_rotation_test.sh** - v0.0.3 新增的日志轮转功能测试 - **cleanup_test.sh** - 测试环境清理 - **test_paths.sh** - 路径验证和环境检查工具 (新增) - **README.md** - Linux 测试套件详细使用说明 (新增) - **PATH_FIXES_REPORT.md** - 路径修正完成报告 (新增) #### 路径修正改进 (Linux) - ✅ **脚本目录自动获取**: 所有脚本现在使用 `SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"` - ✅ **工作目录自动切换**: 通过 `cd "$SCRIPT_DIR"` 确保工作目录一致 - ✅ **相对路径标准化**: Dockerfile 路径、日志目录、测试数据目录统一使用相对路径 - ✅ **卷挂载路径修正**: Docker 卷挂载使用正确的绝对路径 - ✅ **SSH 密钥路径统一**: 所有测试中的 SSH 密钥路径已统一 - ✅ **日志目录本地化**: 从 `/tmp` 迁移到脚本本地目录 - ✅ **端口配置更新**: HTTP 端口从 8080 更新为 8888 ## 快速开始 ### Windows 环境一键测试 ```powershell # 方式1: 从测试目录运行 (推荐) cd "c:\Users\Unbal\Desktop\dockerfiledir\test\v0.0.3\windows" .\start.ps1 # 方式2: 从任意目录运行 (路径修正后支持) & "c:\Users\Unbal\Desktop\dockerfiledir\test\v0.0.3\windows\start.ps1" # 或使用自定义参数 .\start.ps1 -Tag "hexo-test:v0.0.3" -HttpPort 8888 -SshPort 2222 # 验证路径配置 (新增功能) .\test_paths.ps1 ``` ### Linux 环境一键测试 ```bash # 方式1: 从测试目录运行 (推荐) cd "/path/to/dockerfiledir/test/v0.0.3/linux" # 设置执行权限 chmod +x *.sh # 运行完整测试套件 ./start.sh # 方式2: 从任意目录运行 (路径修正后支持) "/path/to/dockerfiledir/test/v0.0.3/linux/start.sh" # 或使用自定义参数 ./start.sh --clean-start # 验证路径配置 (新增功能) ./test_paths.sh ``` ## Windows 11 Docker Desktop 测试 ### 方法一:一键自动化测试(推荐) 使用完整的自动化测试套件,包含构建、运行、功能验证、日志轮转测试等: ```powershell # 方式1: 从测试目录运行 (推荐) cd "c:\Users\Unbal\Desktop\dockerfiledir\test\v0.0.3\windows" .\start.ps1 # 方式2: 从任意目录运行 (路径修正后支持) & "c:\Users\Unbal\Desktop\dockerfiledir\test\v0.0.3\windows\start.ps1" # 使用自定义参数运行测试 .\start.ps1 -Tag "hexo-test:v0.0.3" -HttpPort 8888 -SshPort 2222 # 运行测试后自动清理 .\start.ps1 -CleanupAfter # 跳过某些测试阶段 .\start.ps1 -SkipBuild -SkipLogRotation # 验证路径配置 (新增) .\test_paths.ps1 ``` ### 方法二:分步测试 如果需要分步执行或调试特定功能,可以单独运行各个测试脚本: #### 1. 构建测试 (build_test.ps1) ```powershell # 基础构建测试 .\build_test.ps1 # 使用自定义参数构建 .\build_test.ps1 -Tag "my-hexo:test" -Platform "linux/amd64" # 注意:脚本现在会自动切换到正确目录,确保 Dockerfile 路径正确 ``` #### 2. 运行测试 (run_test.ps1) ```powershell # 基础运行测试 .\run_test.ps1 # 使用自定义参数 (默认端口已更新为 8888) .\run_test.ps1 -Tag "my-hexo:test" -HttpPort 8888 -SshPort 2222 -ContainerName "my-hexo-test" # 注意:卷挂载路径已修正,使用正确的绝对路径 ``` #### 3. 功能测试 (functional_test.ps1) ```powershell # 完整功能测试:HTTP、SSH、健康检查 .\functional_test.ps1 # 测试指定容器 (默认端口已更新) .\functional_test.ps1 -ContainerName "my-hexo-test" -HttpPort 8888 -SshPort 2222 # 注意:SSH 密钥路径已统一,自动使用正确的绝对路径 ``` #### 4. 日志轮转测试 (log_rotation_test.ps1) - v0.0.3 新功能 ```powershell # 测试日志轮转功能 .\log_rotation_test.ps1 # 测试指定容器的日志轮转 .\log_rotation_test.ps1 -ContainerName "my-hexo-test" # 注意:SSH 密钥路径已修正,确保测试的稳定性和可移植性 ``` #### 5. 清理测试 (cleanup_test.ps1) ```powershell # 清理测试环境 .\cleanup_test.ps1 # 清理指定容器和镜像 .\cleanup_test.ps1 -ContainerName "my-hexo-test" -ImageTag "my-hexo:test" ``` ### start.ps1 完整参数说明 ```powershell # 完整参数列表 .\start.ps1 ` -SkipBuild # 跳过构建阶段 -SkipFunctional # 跳过功能测试阶段 -SkipLogRotation # 跳过日志轮转测试阶段 -CleanupAfter # 测试完成后自动清理环境 -Tag "custom:tag" # 自定义 Docker 镜像标签 -ContainerName "name" # 自定义容器名称 -HttpPort 8888 # HTTP 服务端口 (默认: 8888) -SshPort 2222 # SSH 服务端口 (默认: 2222) # 测试结果和日志 # 所有测试都会生成详细的日志文件在 logs/ 目录下 # 测试完成后会显示完整的测试报告 # 路径验证工具 (新增) .\test_paths.ps1 # 验证和创建所需的目录结构 # 详细使用说明 Get-Content .\README.md # 查看详细的使用说明和故障排除指南 ``` ## N305 NAS Linux 测试 ### 方法一:一键自动化测试(推荐) 使用完整的自动化测试套件,支持完全自动化的测试流程: ```bash # 进入 Linux 测试目录 cd "/path/to/dockerfiledir/test/v0.0.3/linux" # 设置执行权限 chmod +x *.sh # 运行完整测试套件(推荐) ./start.sh # 使用清理模式运行测试(运行前清理环境) ./start.sh --clean-start # 查看帮助信息 ./start.sh --help ``` ### 方法二:分步测试 如果需要分步执行或调试特定功能,可以单独运行各个测试脚本: #### 1. 构建测试 (build_test.sh) ```bash # 基础构建测试 ./build_test.sh # 使用自定义参数构建 ./build_test.sh "my-hexo:test" "linux/amd64" ``` #### 2. 运行测试 (run_test.sh) ```bash # 基础运行测试 ./run_test.sh # 使用自定义参数 ./run_test.sh "my-hexo:test" "my-hexo-test" 8888 2222 ``` #### 3. 功能测试 (functional_test.sh) ```bash # 完整功能测试:HTTP、SSH、健康检查 ./functional_test.sh # 测试指定容器 ./functional_test.sh "my-hexo-test" 8888 2222 ``` #### 4. 日志轮转测试 (log_rotation_test.sh) - v0.0.3 新功能 ```bash # 测试日志轮转功能 ./log_rotation_test.sh # 测试指定容器的日志轮转 ./log_rotation_test.sh "my-hexo-test" ``` #### 5. 清理测试 (cleanup_test.sh) ```bash # 清理测试环境 ./cleanup_test.sh # 清理指定容器和镜像 ./cleanup_test.sh "my-hexo-test" "my-hexo:test" ``` ### start.sh 完整参数说明 ```bash # 基础用法 ./start.sh # 标准测试流程 ./start.sh --clean-start # 清理后重新开始测试 ./start.sh --help # 显示帮助信息 # 测试结果和日志 # 所有测试日志保存在 /tmp/hexo-test-suite/ 目录下 # 测试完成后会显示完整的彩色测试报告 # 支持自动故障检测和详细错误报告 ``` ### Linux 环境特殊配置 ```bash # 确保 Docker 服务运行 sudo systemctl start docker sudo systemctl enable docker # 将当前用户添加到 docker 组(避免使用 sudo) sudo usermod -aG docker $USER newgrp docker # 验证 Docker 安装 docker --version docker-compose --version # 确保所需端口可用 sudo netstat -tlnp | grep -E ':(8888|2222)' ``` ## 自动化测试框架特性 ### 测试套件功能 1. **智能测试流程** - 自动检测前置条件,智能跳过不必要的步骤 2. **详细日志记录** - 每个测试阶段都有完整的日志记录和时间戳 3. **彩色输出显示** - 清晰的成功/失败状态指示 4. **错误自动诊断** - 测试失败时提供详细的错误分析 5. **性能指标统计** - 自动记录构建时间、启动时间、内存使用等 6. **测试报告生成** - 自动生成标准化的测试报告 ### 测试覆盖范围 - ✅ **Docker 镜像构建** - 验证 Dockerfile_v0.0.3 构建过程 - ✅ **容器启动验证** - 检查容器是否正常启动和运行 - ✅ **HTTP 服务测试** - 验证 Nginx 服务和静态文件服务 - ✅ **SSH 服务测试** - 验证 SSH 连接和身份验证 - ✅ **健康检查测试** - 验证 /health 端点响应 - ✅ **日志轮转测试** - v0.0.3 特有的日志管理功能 - ✅ **Git 部署测试** - 验证 Git hooks 和自动部署 - ✅ **权限验证测试** - 确保文件权限和用户权限正确 - ✅ **环境清理测试** - 验证测试环境的完整清理 ## 测试检查清单 ### 基础功能验证 - [ ] Docker 镜像成功构建(< 5 分钟) - [ ] 容器成功启动(< 30 秒) - [ ] HTTP 服务响应正常(端口 8888) - [ ] 健康检查端点 `/health` 返回 "OK" - [ ] SSH 服务可连接(端口 22/2222) - [ ] Git 仓库初始化正确 - [ ] Hexo 站点文件部署正常 ### v0.0.3 新功能验证 - [ ] 定期日志轮转功能正常(每30分钟检查) - [ ] Git Hook 日志权限正确(hexo 用户可写入) - [ ] 部署日志 `/var/log/container/deployment.log` 正常 - [ ] 日志文件大小控制(10MB 轮转触发) - [ ] 旧日志文件自动清理和备份 - [ ] 时间戳日志备份文件生成 ### 安全性验证 - [ ] 容器以非 root 用户(hexo)运行 - [ ] SSH 仅支持密钥认证(密码认证已禁用) - [ ] 文件权限设置正确(644/755) - [ ] 网络端口访问控制正常 - [ ] 敏感文件权限保护 ### 性能和稳定性验证 - [ ] 容器启动时间 < 30 秒 - [ ] HTTP 响应时间 < 1 秒 - [ ] 内存使用 < 500MB - [ ] CPU 使用率正常(< 50%) - [ ] 日志轮转不影响服务性能 - [ ] 多次部署操作稳定无错误 ## 故障排查指南 ### 自动化测试框架故障排查 #### 1. 测试脚本权限问题 ```bash # Linux 环境 chmod +x test/v0.0.3/linux/*.sh # Windows 环境(PowerShell 执行策略) Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ``` #### 2. 路径相关问题 (新增) ```powershell # Windows 环境 - 验证路径配置 cd "c:\Users\Unbal\Desktop\dockerfiledir\test\v0.0.3\windows" .\test_paths.ps1 # 查看路径修正报告 Get-Content .\PATH_FIXES_REPORT.md # 查看详细使用说明 Get-Content .\README.md ``` #### 2. Docker 相关问题 ```bash # 检查 Docker 服务状态 docker info docker version # 清理 Docker 环境 docker system prune -f docker volume prune -f ``` #### 3. 端口冲突问题 ```bash # Linux 检查端口占用 netstat -tlnp | grep -E ':(8888|2222)' # 端口已更新 sudo lsof -i :8888 sudo lsof -i :2222 # Windows 检查端口占用 netstat -ano | findstr :8888 # 端口已更新 netstat -ano | findstr :2222 ``` #### 4. 测试日志分析 ```bash # 查看最新测试日志 ls -la logs/ | tail -5 # Linux Get-ChildItem logs\ | Sort-Object LastWriteTime | Select-Object -Last 5 # Windows # 搜索错误信息 grep -i error logs/test_suite_*.log # Linux Select-String -Pattern "error" -Path "logs\test_suite_*.log" # Windows ``` ### 容器运行时故障排查 #### 1. 容器无法启动 ```bash # 检查容器日志 docker logs hexo-test-v003 # 检查镜像是否存在 docker images | grep hexo-test # 检查 Dockerfile 语法 docker build --dry-run -f Dockerfile_v0.0.3 . ``` #### 2. 服务连接失败 ```bash # 检查容器网络 docker port hexo-test-v003 docker inspect hexo-test-v003 | grep -A 10 "NetworkSettings" # 测试容器内服务 docker exec hexo-test-v003 curl -f http://localhost/health docker exec hexo-test-v003 netstat -tlnp ``` #### 3. 日志轮转问题(v0.0.3 特有) ```bash # 检查日志轮转配置 docker exec hexo-test-v003 cat /etc/logrotate.d/container-logs # 手动触发日志轮转 docker exec hexo-test-v003 logrotate -f /etc/logrotate.d/container-logs # 检查日志文件状态 docker exec hexo-test-v003 ls -la /var/log/container/ ``` ## 测试报告模板 ### 基本信息 - **测试版本**: Docker Hexo Static Blog v0.0.3 - **测试平台**: Windows 11 / Linux - **测试日期**: {{ 测试日期 }} - **测试人员**: {{ 测试人员 }} - **Docker 版本**: {{ docker --version }} ### 自动化测试结果 | 测试阶段 | 状态 | 执行时间 | 备注 | |----------|------|----------|------| | 镜像构建 | ✅/❌ | {{ 时间 }} | {{ 备注 }} | | 容器启动 | ✅/❌ | {{ 时间 }} | {{ 备注 }} | | HTTP 服务 | ✅/❌ | {{ 时间 }} | {{ 备注 }} | | SSH 服务 | ✅/❌ | {{ 时间 }} | {{ 备注 }} | | 功能测试 | ✅/❌ | {{ 时间 }} | {{ 备注 }} | | 日志轮转 | ✅/❌ | {{ 时间 }} | {{ 备注 }} | | 环境清理 | ✅/❌ | {{ 时间 }} | {{ 备注 }} | ### 性能指标 - **总测试时间**: {{ 总时间 }} - **镜像构建时间**: {{ 构建时间 }} - **容器启动时间**: {{ 启动时间 }} - **内存使用峰值**: {{ 内存使用 }} - **HTTP 响应时间**: {{ 响应时间 }} ### v0.0.3 新功能测试结果 - **日志轮转功能**: ✅/❌ {{ 详细说明 }} - **Git Hook 权限**: ✅/❌ {{ 详细说明 }} - **部署日志管理**: ✅/❌ {{ 详细说明 }} - **权限动态修复**: ✅/❌ {{ 详细说明 }} ### 发现的问题 1. {{ 问题描述 1 }} 2. {{ 问题描述 2 }} 3. {{ 问题描述 3 }} ### 改进建议 1. {{ 改进建议 1 }} 2. {{ 改进建议 2 }} 3. {{ 改进建议 3 }} --- ## 总结 本测试指南基于项目中实际的自动化测试框架编写,提供了: ### 主要特性 - ✅ **完全自动化** - 一键执行完整测试流程 - ✅ **跨平台支持** - Windows PowerShell 和 Linux Bash 双平台 - ✅ **智能诊断** - 自动错误检测和详细报告 - ✅ **详细日志** - 完整的测试过程记录 - ✅ **灵活配置** - 支持自定义参数和选择性测试 - ✅ **路径修正完成** - 所有 Windows 和 Linux 测试脚本已完成路径修正 (2025年5月) ### v0.0.3 测试脚本更新内容 (2025年5月30日) #### Windows PowerShell 测试套件改进 1. **路径修正**: 所有 Windows PowerShell 测试脚本完成路径修正 2. **工作目录标准化**: 脚本自动切换到正确的工作目录 3. **PowerShell 语法修正**: param() 块位置已修正 4. **卷挂载路径修正**: Docker 卷挂载使用正确的绝对路径 5. **SSH 密钥路径统一**: 统一所有测试中的 SSH 密钥路径处理 6. **端口更新**: 默认 HTTP 端口从 8080 更新为 8888 7. **新增工具**: 添加 `test_paths.ps1` 路径验证工具 #### Linux Bash 测试套件改进 (新增) 1. **路径修正**: 所有 Linux Bash 测试脚本完成路径修正 2. **脚本目录自动获取**: 使用 `SCRIPT_DIR` 变量统一路径处理 3. **工作目录标准化**: 通过 `cd "$SCRIPT_DIR"` 确保一致性 4. **卷挂载路径修正**: Docker 卷挂载使用正确的绝对路径 5. **SSH 密钥路径统一**: 统一所有测试中的 SSH 密钥路径处理 6. **日志目录本地化**: 从 `/tmp` 迁移到脚本本地目录 7. **端口配置更新**: HTTP 端口从 8080 更新为 8888 8. **新增工具**: 添加 `test_paths.sh` 路径验证工具和详细文档 7. **新增工具脚本**: - `test_paths.ps1` - 路径验证工具 - `README.md` - 详细使用说明 - `PATH_FIXES_REPORT.md` - 路径修正完成报告 ### 使用建议 1. **日常开发测试** - 使用一键测试脚本快速验证 2. **详细功能验证** - 使用分步测试脚本深入调试 3. **持续集成** - 集成到 CI/CD 流程中自动化验证 4. **生产部署前** - 运行完整测试套件确保稳定性 5. **路径验证** - 使用 `test_paths.ps1` 验证测试环境配置 ### 测试覆盖 本测试框架全面覆盖了 Docker Hexo Static Blog v0.0.3 的所有核心功能,特别是新版本的日志轮转和权限管理功能,确保在不同环境中的稳定性和可靠性。 通过使用这个自动化测试框架,可以大大提高测试效率,减少人为错误,并确保每次测试的一致性和完整性。经过路径修正后,Windows 测试脚本现在具有更好的可移植性和可靠性。