已合并
[bugfix][ide-plugins] #77 支持持久化 VS Code 测试缓存 #73
[bugfix][ide-plugins] #77 支持持久化 VS Code 测试缓存 #73
已合并
guomengwei创建于 13 天前
guomengwei成员
13 天前

问题单 PR 模板

关联信息

  • Issue:#77
  • 里程碑(可选):无

问题描述(必填)

复现路径:

  1. 清理流水线工作区及 .vscode-test/
  2. 在 macOS ARM 构建节点执行 npm test
  3. 等待 @vscode/test-electron 下载 VS Code 1.130.0 测试运行时。
  4. 网络连接被重置时,流水线在集成测试启动前失败。

现象:

  • VS Code 测试运行时约 315 MB,工作区清理后会重复下载。
  • 下载过程中出现 ECONNRESET 时,即使测试代码没有问题,流水线也会失败。

img_v3_0214s_8cd6c112-032f-4942-8f64-e3589b974f5g.jpg

根因分析:

  • @vscode/test-electron 默认将测试运行时缓存在仓库内的 .vscode-test/
  • 流水线清理工作区后缓存失效,后续任务必须重新依赖外网下载。

解决方案(必填)

核心改动:

  • 支持通过 VSCODE_TEST_CACHE_PATH 指定构建节点上的持久化 VS Code 测试缓存目录。
  • 在启动测试前递归创建缓存目录,支持父目录尚不存在的首次初始化场景。
  • 未设置环境变量时继续使用仓库内 .vscode-test/,保持原有本地测试行为。
  • 将下载空闲超时调整为 60 秒,降低短时网络抖动造成的失败概率。

影响范围:

  • 仅影响 VS Code Extension Host 集成测试启动前的运行时缓存和下载超时。
  • 不影响 CJMP 插件运行时代码、插件打包结果及未配置环境变量的本地开发流程。

用户可见变更(若无则写“无”)

  • 无。

自验方案(必填)

测试用例:

  • 执行 VSCODE_TEST_CACHE_PATH=/Users/keels/jenkins/cjmp/IDE-Plugins/.vscode-test npm test
  • 确认测试日志显示命中 vscode-darwin-arm64-1.130.0,未重新下载 VS Code 测试运行时。
  • 完整测试结果:133 passing
  • 执行 node --check scripts/run-vscode-coverage.mjsgit diff --check

验证环境:

  • 版本/分支/commit:bugfix/persistent-vscode-test-cache / c6024d7
  • 设备与系统:macOS ARM 构建节点,Node.js v23.11.0
likedislike
Pull Request已成功合入, 合并人@renyufei
(感谢 guomengwei 的贡献)
Gguomengwei成员
13 天前 添加了label:bug
Gguomengwei成员
13 天前 关联了issue:[bug] 流水线下载 VS Code 测试运行时易失败
Gguomengwei成员
13 天前 修改了pull request 的描述
Gguomengwei成员
13 天前 修改了pull request 的描述
guomengwei成员
13 天前 评论:

retest

likedislike
cjmp_ci成员
13 天前 评论:

门禁已触发,CI 正在排队/启动中……

likedislike
cjmp_ci成员
13 天前 评论:

@Gmw2012
🚦 门禁已触发
当前状态:排队/执行中
流水线地址:http://119.8.58.242:8080/blue/organizations/jenkins/IDE-Plugins%2Fpipeline-all/detail/pipeline-all/62/pipeline

如需登录 Jenkins 查看详情:

  • 账号:GitCode username
  • 初始密码:与账号相同(若已修改请使用新密码)
likedislike
Ccjmp_ci成员
13 天前 将cjmp_ci设为测试人
Ccjmp_ci成员
13 天前 重置了测试状态
cjmp_ci成员
13 天前 评论:

@Gmw2012
CI 门禁失败
结果:FAILURE
流水线地址:http://119.8.58.242:8080/blue/organizations/jenkins/IDE-Plugins%2Fpipeline-all/detail/pipeline-all/62/pipeline

Jenkins 登录信息:

  • 账号:GitCode username
  • 密码:与账号相同(若已修改请使用新密码)
likedislike
guomengwei成员
13 天前 评论:

retest

likedislike
cjmp_ci成员
13 天前 评论:

门禁已触发,CI 正在排队/启动中……

likedislike
cjmp_ci成员
13 天前 评论:

@Gmw2012
🚦 门禁已触发
当前状态:排队/执行中
流水线地址:http://119.8.58.242:8080/blue/organizations/jenkins/IDE-Plugins%2Fpipeline-all/detail/pipeline-all/63/pipeline

如需登录 Jenkins 查看详情:

  • 账号:GitCode username
  • 初始密码:与账号相同(若已修改请使用新密码)
likedislike
Ccjmp_ci成员
13 天前 重置了测试状态
cjmp_ci成员
13 天前 评论:

@Gmw2012
CI 门禁失败
结果:FAILURE
流水线地址:http://119.8.58.242:8080/blue/organizations/jenkins/IDE-Plugins%2Fpipeline-all/detail/pipeline-all/63/pipeline

Jenkins 登录信息:

  • 账号:GitCode username
  • 密码:与账号相同(若已修改请使用新密码)
likedislike
Gguomengwei成员
13 天前 强制推送  1 个提交:03f747cc-[bugfix][ide-plugins] #77 支持持久化 VS Code 测试缓存
Gguomengwei成员
13 天前 强制推送  1 个提交:c6024d75-[bugfix][ide-plugins] #77 支持持久化 VS Code 测试缓存
Gguomengwei成员
13 天前 修改了pull request 的描述
guomengwei成员
13 天前 评论:

retest

likedislike
cjmp_ci成员
13 天前 评论:

门禁已触发,CI 正在排队/启动中……

likedislike
cjmp_ci成员
13 天前 评论:

@Gmw2012
🚦 门禁已触发
当前状态:排队/执行中
流水线地址:http://119.8.58.242:8080/blue/organizations/jenkins/IDE-Plugins%2Fpipeline-all/detail/pipeline-all/64/pipeline

如需登录 Jenkins 查看详情:

  • 账号:GitCode username
  • 初始密码:与账号相同(若已修改请使用新密码)
likedislike
Ccjmp_ci成员
13 天前 重置了测试状态
Ccjmp_ci成员
13 天前 通过测试
cjmp_ci成员
13 天前 评论:

@Gmw2012
CI 门禁通过
结果:SUCCESS
流水线地址:http://119.8.58.242:8080/blue/organizations/jenkins/IDE-Plugins%2Fpipeline-all/detail/pipeline-all/64/pipeline

Jenkins 登录信息:

  • 账号:GitCode username
  • 密码:与账号相同(若已修改请使用新密码)
likedislike
Ccjmp_ci成员
13 天前 添加了label:CI-passed
Gguomengwei成员
13 天前 修改了pull request 的描述
renyufei成员13 天前进行代码检视3
README.md
已过期
@@ -32,0 +34,4 @@
34+npm test
35+```
36+ 
37+集成测试所需的 VS Code 测试运行时默认缓存在仓库的 `.vscode-test/` 目录。流水线可以通过 `VSCODE_TEST_CACHE_PATH` 指定构建节点上的专用持久化缓存目录,使其不受工作区清理影响;目录不存在时会自动递归创建:
renyufei13 天前评论:

如果是内部CI专用的,感觉不用说明,如果准备提供给用户,这里不用提CI的事情

likedislike
System
系统消息系统
13 天前 评论:

changed this line on 6e4cc7eb view diff detail

guomengwei成员
13 天前 评论:

内部CI专用,已删除说明。

Gguomengwei成员
13 天前 测试状态已重置,测试人: cjmp_ci
Gguomengwei成员
13 天前 强制推送  1 个提交:6e4cc7eb-[bugfix][ide-plugins] #77 支持持久化 VS Code 测试缓存
Ccjmp_ci成员
13 天前 删除了label:CI-passed
Gguomengwei成员
13 天前 修改了pull request 的描述
guomengwei成员
13 天前 评论:

retest

likedislike
cjmp_ci成员
13 天前 评论:

门禁已触发,CI 正在排队/启动中……

likedislike
cjmp_ci成员
13 天前 评论:

@Gmw2012
🚦 门禁已触发
当前状态:排队/执行中
流水线地址:http://119.8.58.242:8080/blue/organizations/jenkins/IDE-Plugins%2Fpipeline-all/detail/pipeline-all/67/pipeline

如需登录 Jenkins 查看详情:

  • 账号:GitCode username
  • 初始密码:与账号相同(若已修改请使用新密码)
likedislike
Ccjmp_ci成员
13 天前 重置了测试状态
Ccjmp_ci成员
13 天前 通过测试
cjmp_ci成员
13 天前 评论:

@Gmw2012
CI 门禁通过
结果:SUCCESS
流水线地址:http://119.8.58.242:8080/blue/organizations/jenkins/IDE-Plugins%2Fpipeline-all/detail/pipeline-all/67/pipeline

Jenkins 登录信息:

  • 账号:GitCode username
  • 密码:与账号相同(若已修改请使用新密码)
likedislike
Ccjmp_ci成员
13 天前 添加了label:CI-passed
此处折叠了9条事件消息 查看更多
Ccjmp_ci成员
12 天前 添加了label:reviewed