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

如何通过GitHub Script Action上传GitHub Release制品

使用GitHub Script Action上传Release制品(Tarball)

要将tarball文件内容填入data参数,你可以利用Node.js的fs模块读取文件的二进制内容(Buffer),因为uploadReleaseAsset接口接受Buffer类型的文件数据。以下是修正后的完整Workflow代码:

- name: Upload Assets
  uses: "actions/github-script@v6"
  with:
    script: |
        const fs = require('fs');
        const path = require('path');
        
        try {
          // 读取tarball文件,返回Buffer类型的二进制内容
          const fileContent = fs.readFileSync(path.join(process.cwd(), 'release.tar.xz'));
          
          return await github.rest.repos.uploadReleaseAsset({
            owner: context.repo.owner,
            repo: context.repo.repo,
            name: "release.tar.xz",
            release_id: ${{ fromJSON(steps.deploy.outputs.result).data.id }},
            data: fileContent,
            // 可选:指定文件的Content-Type,有助于GitHub正确识别文件类型
            headers: {
              'content-type': 'application/x-xz'
            }
          })
        } catch (error) {
          core.setFailed(error.message);
        }

关键说明:

  • 用fs.readFileSync读取文件:因为tarball是二进制文件,无需指定编码,默认返回Buffer,正好符合Octokit接口的要求。
  • 路径处理:使用path.join(process.cwd(), 'release.tar.xz')确保文件路径正确,process.cwd()是GitHub Runner的当前工作目录,如果你生成的tarball在其他子目录,需要调整路径。
  • 语法修正:原代码中release_id行末尾缺少逗号,必须补上否则会报错。
  • 可选的Content-Type:添加headers指定content-type为application/x-xz,能让GitHub正确识别这是xz压缩的tar包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:10:34