GitHub Actions上传allure-raw制品失败求助(Windows自托管Runner)
GitHub Actions Windows自托管Runner上传制品失败排查
问题背景
使用Windows自托管Runner(PowerShell环境)配置的GitHub Actions工作流上传制品时失败,相关配置、报错及文件列表如下:
工作流配置
- name: List files working-directory: allure-raw run: | ls - name: Upload artifact if: always() uses: actions/upload-artifact@v4.3.0 with: name: allure-raw path: ${{ github.workspace }}/allure-raw/ retention-days: 10
报错信息
ENOENT: no such file or directory, realpath 'C:\actions-runner\_work\abc\repo\allure-raw\videos\rawSeleniumVideoGrabs\Validate-base-forecast-review-workflow-1--Edit-IBP-MAAS-Existing-DashBoard-and-Pivotcard-and-Load-with-new-dimension-Hiearachies-measures-and-apply-vertical-filter-BFR_TC1--CHROME--02-01-2024--07-20-08-794'
文件列表输出
Directory: C:\actions-runner\_work\abc\repo\allure-raw Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 1/31/2024 8:47 PM videos -a---- 1/31/2024 9:00 PM 18255 8a66b2d9-79dd-4887-b5a9-9cb6c6843e68-testsuite.xml
排查方向及解决方案
1. 解决Windows长路径限制问题
报错中的文件路径长度远超Windows默认260字符的限制,这是最可能的触发原因:
- 启用长路径支持:
在自托管Runner机器上执行以下PowerShell命令(需管理员权限),完成后重启GitHub Runner服务:New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force - 缩短文件名/路径:
修改测试生成的视频文件名,用短标识符(如测试用例ID)替代冗长的测试名称,直接减少路径总长度。
2. 确认文件未被进程占用
测试生成的视频文件可能仍被测试工具(如Selenium)占用,导致上传时无法读取:
- 在上传步骤前添加延迟,确保文件完全写入磁盘:
- name: Wait for file release run: Start-Sleep -Seconds 10 - 检查测试脚本是否正确关闭视频录制进程,确保文件资源被完全释放。
3. 调整路径写法适配Windows环境
尝试使用Windows原生路径分隔符或相对路径,避免跨平台路径解析问题:
- 替换路径为Windows格式:
path: ${{ github.workspace }}\allure-raw\ - 使用相对路径(基于工作目录):
path: allure-raw/
4. 检查Runner账户权限
确保GitHub Runner服务运行的账户对allure-raw/videos/rawSeleniumVideoGrabs目录及其中文件有读取权限:
- 查看Runner服务的运行账户(默认是
NT SERVICE\actions.runner),在文件资源管理器中给该账户添加对应目录的读取权限。
内容的提问来源于stack exchange,提问作者Maxx
相关产品推荐
相关产品推荐

