You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub Actions上传Windows编译C程序工件遇EACCES权限错误求助

问题原因及解决方案

原因分析

这个权限错误通常由以下几种情况导致:

  • msys2编译生成的soft.exe继承了msys2环境的POSIX权限映射,在Windows原生环境下,GitHub Actions的运行用户没有足够的读取/访问权限。
  • 编译完成后,soft.exe可能被编译进程或相关后台进程锁定,导致无法被读取。
  • 路径格式(反斜杠)在GitHub Actions的文件解析逻辑中可能引发权限检查异常。

解决方案

以下是几种可行的解决方法,按优先级尝试:

1. 直接修改文件权限

在上传工件前添加步骤,给目标文件赋予完全控制权限:

- name: Grant permissions to executable
  run: icacls "D:\a\softbochs\softbochs\build\soft.exe" /grant Everyone:F /T

或者使用PowerShell命令更精细地设置权限:

- name: Fix file permissions via PowerShell
  run: |
    $targetFile = "D:\a\softbochs\softbochs\build\soft.exe"
    $acl = Get-Acl $targetFile
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
        "NT AUTHORITY\Authenticated Users",
        "FullControl",
        "Allow"
    )
    $acl.SetAccessRule($accessRule)
    Set-Acl $targetFile $acl

2. 清理残留进程

如果文件被编译进程锁定,先尝试终止相关进程:

- name: Terminate leftover processes
  run: taskkill /f /im soft.exe 2>nul || echo No running soft.exe process found

3. 调整路径格式

将YAML中的路径改为正斜杠格式或相对路径,避免反斜杠可能带来的解析问题:

- name: Upload artifact
  uses: actions/upload-artifact@v4.3.1
  with:
    name: softbochs
    path: D:/a/softbochs/softbochs/build/

或者使用相对路径(如果当前工作目录是仓库根目录):

- name: Upload artifact
  uses: actions/upload-artifact@v4.3.1
  with:
    name: softbochs
    path: ./build/

4. 复制文件到新目录后上传

复制文件到一个新目录,重置文件权限后再上传:

- name: Prepare artifact for upload
  run: |
    mkdir -p ./upload_dir
    copy "D:\a\softbochs\softbochs\build\soft.exe" ./upload_dir/
- name: Upload artifact
  uses: actions/upload-artifact@v4.3.1
  with:
    name: softbochs
    path: ./upload_dir/

内容的提问来源于stack exchange,提问作者marc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 18:15:11