Skip to content

Conversation

@tangsangsimida
Copy link
Contributor

  • 重新整理了各个源对ros1&&ros2的支持字典
  • 新增 generate-test-matrix 任务,用于从 YAML 文件动态生成测试矩阵。
  • 将工作流测试配置文件中安装的ros版本修改为ros1的版本(中科大的镜像无法支持ubuntu18.04安装ros2)
  • 修改依赖安装逻辑,使用批量安装方式提高效率

tangsangsimida and others added 24 commits August 4, 2025 21:22
1. 增强rosdep工具:
   - 添加pip源选择功能功能

2. 改进系统源配置工具:
   - 添加源选择方式说明
   - 提供两种源选择方法(自动选择最快源/手动选择源)
   - 扩展get_source_by_system函数支持返回所有源

这些改进提高了安装脚本的用户体验和网络适应性,特别是在网络条件不稳定的环境中。
- 修改 base.py 中的文件写入逻辑,使用临时文件和 sudo 权限
- 优化 tool_install_ros.py 中的ROS镜像源选择逻辑,让用户可以自行选择ROS镜像源
- 移除多次固定源添加尝试,改为让用户重新选择镜像源
- 在首次尝试失败后,提示用户重新选择镜像源进行尝试
- 如果重新选择的镜像源成功添加,继续进行后续操作
- 如果用户选择相同的镜像源且四次尝试均失败,提示联系小鱼获取解决方案
- 在多个 ROS 安装工具中统一退出操作的处理方式
- 使用 PrintUtils.print_error() 替换直接 print,提高错误信息的可读性
- 返回 False 以明确表示退出操作失败
- 涉及工具:tool_install_ros.py, tool_install_ros1_systemdefault.py, tool_install_ros_with_docker.py
- 修复rosdepc函数中print_warn的错误调用
- 调整安装的顺序,默认使用不带参数的安装
- 将镜像源的名称修改为全名而非简称
- 删除了未使用的导入模块
- 移除了未使用的 test_source_speed 函数
- 移除了未使用的 FileUtils 和 AptUtils 模块
- 优化了代码结构,提高了代码的可读性和维护性
- wget相关文件之前提前创建本地相关文件夹防止被记录报错
将 `base.py` 和 `tool_config_rosdep.py` 文件中的 f-string 格式化改为 `.format()` 方法,以保持代码风格的一致性。
新增 GitHub Actions 工作流用于测试安装脚本,支持多 Ubuntu 版本。

添加 test_runner.py 脚本,实现基于 YAML 配置的自动化测试逻辑。

新增 fish_install_test.yaml 测试配置文件,包含多个安装项的测试用例。

test_report.json和test_report.html文件作为artifact保存,便于后续查看和分析测试结果

在测试运行器中新增generate_html_report函数,用于生成带样式的HTML测试报告。

Co-authored-by: awan-deng <2152621419@qq.com>
移除Ubuntu 18.04和25.10,仅保留20.04、22.04和24.04版本用于测试安装流程
移除了 GitHub Actions 工作流配置文件 `.github/workflows/test-install.yml`,
以及相关的测试配置文件 `tests/fish_install_test.yaml` 和测试运行器
`tests/test_runner.py`。这些文件已被新的测试方案替代,故予以清理。
- 在 `FileUtils.new` 方法中,使用 uuid 生成唯一临时文件名以避免权限冲突
- 添加了对临时文件的清理逻辑,确保即使出现异常也能删除临时文件
- 移除了 `tool_config_system_source.py` 中多余的空行,优化代码格式
- 更新注释说明,明确指出使用已修复的 `FileUtils.new` 方法来配置系统源
feat(test): 添加自动化测试工作流和测试 runner

- 新增 GitHub Actions 工作流用于测试安装脚本,支持多 Ubuntu 版本。
- 添加 test_runner.py 脚本,实现基于 YAML 配置的自动化测试逻辑。
- 新增 fish_install_test.yaml 测试配置文件,包含多个安装项的测试用例。

fix(install): 跳过GitHub Actions环境中的配置文件生成和提示信息

- 在 GitHub Actions 环境中运行时,跳过需要用户交互的配置文件生成
  以及相关欢迎和帮助信息的打印操作,避免因等待输入导致流程卡住。

fix(tools): 处理自动化测试环境中的 EOFError 异常

- 在 `ChooseTask` 和 `ChooseWithCategoriesTask` 类中,添加对 `input()` 函数在自动化测试环境下可能引发的 `EOFError` 异常处理。当捕获到该异常时,若存在配置文件提供的默认选项则使用它,否则默认选择退出(编号 0),并提示用户当前处于自动化环境。

feat(test): 为测试运行器添加环境变量配置支持

- 在 test_runner.py 中更新 run_install_test 函数,通过环境变量传递
  FISH_INSTALL_CONFIG 配置文件路径,以支持更灵活的测试配置。

- 修改 tools/base.py 中的 ConfigHelper 类,优先从环境变量读取
  配置文件路径,若未设置则使用默认值 ./fish_install.yaml。

feat(tests): 添加HTML格式测试报告生成功能

- 在测试运行器中新增generate_html_report函数,用于生成带样式的HTML测试报告。报告包含测试摘要和详细结果,支持通过/失败状态的视觉区分。在main函数中调用该功能,将报告保存为test_report.html文件。

ci(test-install): 添加测试报告上传功能

- 在GitHub Actions工作流中添加了测试报告上传步骤,确保在所有情况下都能上传test_report.json和test_report.html文件作为artifact保存,便于后续查看和分析测试结果

build(github-actions): 更新测试工作流中的上传构件操作版本

- 将 test-install.yml 工作流中的 actions/upload-artifact 操作从 v3 版本
  升级到 v4 版本,以使用最新的功能和改进。

test(test_runner): 增加安装测试的超时时间至60分钟

将测试运行器中的进程超时时间从300秒增加到3600秒,以避免在较慢的环境中出现误报超时错误。

fix(test-install): 解决测试安装工作流中的编码问题

- 在 GitHub Actions 工作流中添加了 UTF-8 语言环境支持,确保测试运行器能够正确处理
  中文字符。同时设置了 PYTHONIOENCODING 环境变量以避免编码错误。

- 将GitHub Actions工作流中的locale配置从C.UTF-8更改为en_US.UTF-8,以确保测试环境使用标准的英文UTF-8编码设置。

build(workflow): 添加wget依赖到测试安装工作流

- 在GitHub Actions工作流中添加wget包的安装,以支持后续的下载需求。

fix(test-install): 更新apt包列表并添加sudo依赖

- 在GitHub Actions工作流中,安装软件包前先执行apt update以确保获取最新的包信息
- 添加sudo依赖以支持需要管理员权限的操作。

添加注释说明在GitHub工作流测试中应使用官方源而非国内镜像源

* fix(install): 添加wget忽略证书检查选项以解决SSL问题

- 在安装脚本中,为wget命令添加`--no-check-certificate`参数,以解决某些环境下SSL证书验证失败导致的下载问题。

* ci(test-install): 增强测试工作流的健壮性和输出一致性

- 在shell脚本中添加set -u以提高变量检查严格性
- 设置DEBIAN_FRONTEND为oninteractive以避免交互式安装问题
- 更新pip并安装pyyaml和distro依赖包
- 添加-u参数到python3命令以确保输出不被缓冲
- 升级actions/upload-artifact到v4版本

* test(test_runner): 增加安装测试的超时时间

fix(test-install): 修复Docker容器中的时区设置问题

- 在Ubuntu Docker容器中运行测试时,tzdata包会提示交互式时区选择,
  导致安装过程失败。通过预先设置时区为UTC避免该问题。

ci(test-install): 优化Docker容器中的测试运行命令格式

将Docker运行命令中的参数连接方式从多行连续输入改为使用反斜杠续行,
使YAML配置更清晰易读。同时保持原有的工作目录挂载和环境变量设置功能。

* feat(tools): 支持在GitHub Actions环境中自动覆盖配置文件

当检测到GITHUB_ACTIONS环境变量为true时,跳过用户交互确认步骤,
直接覆盖已存在的配置文件。此修改确保了在自动化测试环境中
配置文件能够被正确更新,而不会因为等待用户输入导致流程中断。

* feat(install): 支持通过环境变量跳过配置文件生成

新增对 `FISH_INSTALL_CONFIG` 环境变量的检查,当该环境变量存在时,
即使不在 GitHub Actions 环境中,也会跳过生成配置文件和后续的打印操作,
以便支持自动化测试场景。

docs(tests): 添加自动化测试说明文档

新增 `tests/README.md` 文件,详细说明了测试目录下的文件结构、
运行方式、测试配置文件格式以及工作原理,并提供了 GitHub Actions 集成说明。

* docs(tests): 更新测试文档并注释旧测试用例

新增“自动化测试与用户实际安装的区别”章节,说明两者在配置文件、环境变量、
跳过步骤及 GitHub Actions 运行环境方面的不同。同时注释掉 `fish_install_test.yaml`
中针对 focal 版本的旧 ROS 安装测试用例。

---------

Co-authored-by: awan-deng <2152621419@qq.com>
重新整理了各个源对ros1&&ros2的支持字典
新增 generate-test-matrix 任务,用于从 YAML 文件动态生成测试矩阵。
将工作流测试配置文件中安装的ros版本修改为ros1的版本(中科大的镜像无法支持ubuntu18.04安装ros2)
修改依赖安装逻辑,使用批量安装方式提高效率
@tangsangsimida tangsangsimida marked this pull request as ready for review October 31, 2025 13:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants