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

如何在GitHub Actions中让发布的二进制文件保持可执行权限?

解决GitHub Release中二进制文件丢失可执行权限的问题

问题原因

GitHub的Artifact和Release上传机制不会保留文件的POSIX权限位,所以即便你在Action流程中执行了chmod +x,文件上传后再下载时,可执行权限仍会被清除。

可行解决方案

方案1:打包成压缩包(推荐)

将二进制文件打包成tar.gz格式,压缩包会完整保留文件的权限信息,用户解压后即可直接运行。修改你的Action配置如下:

- name: Build python script into a stand-alone binary (ubuntu)
    if: startsWith(matrix.os, 'ubuntu')
    uses: Nuitka/Nuitka-Action@main
    with:
      working-directory: src
      nuitka-version: main
      script-name: directory/main.py
      onefile: true
      output-file: main.bin

  - name: Make binary executable
    run: chmod +x ./src/build/main.bin

  - name: Package binary into tar.gz
    run: tar -czf main-ubuntu.tar.gz -C src/build main.bin

  - name: Upload Artifact
    uses: actions/upload-artifact@v3
    with:
      name: ${{ matrix.os }} build
      path: main-ubuntu.tar.gz

  - name: Release
    uses: softprops/action-gh-release@v1
    with:
      files: main-ubuntu.tar.gz

用户下载main-ubuntu.tar.gz后,执行tar -xzf main-ubuntu.tar.gz解压,得到的main.bin会自动保留可执行权限。

方案2:在Release说明中提示用户手动添加权限

如果不想打包,可以在Release的描述中添加操作提示,告诉用户下载后执行权限赋予命令:

- name: Release
    uses: softprops/action-gh-release@v1
    with:
      files: src/build/main.bin
      body: |
        使用步骤:
        1. 下载main.bin文件
        2. 执行 `chmod +x main.bin` 添加可执行权限
        3. 运行 `./main.bin`

方案3:验证权限设置是否生效(排查基础问题)

可以在chmod步骤后添加一个验证步骤,确认权限是否成功设置:

- name: Verify executable permission
    run: ls -l ./src/build/main.bin

查看Action日志,如果输出中包含-rwxr-xr-x前缀,则说明权限设置成功,问题确实出在上传环节,此时优先选择方案1解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:20:02