如何使用Github Release API在没有源代码的情况下进行发布?

Zha*_* Yi 6 git github github-api

我正在使用打击命令在Github存储库上发布发行版:

curl -X POST -H "Authorization: token xxxxxxxxx"  -d '{"tag_name": "test", "name":"release-0.0.1","body":"this is a test release"}'  https://api.github.com/repos/xxxxxx
Run Code Online (Sandbox Code Playgroud)

我可以看到创建了一个新版本。但是下面有两个下载按钮:

Source code (zip)
Source code (tar.gz)
Run Code Online (Sandbox Code Playgroud)

没有源代码如何发布?

如果无法删除源代码附件,如何上传其他二进制文件?我试图Upload a release asset像这样使用API POST https://<upload_url>/repos/:owner/:repo/releases/:id/assets?name=foo.zip:,它成功返回,但是在Github发行选项卡上找不到二进制文件。

hop*_*sch 16

您可以使用.gitattributes文件(并使其成为存储库的一部分)在自动生成中控制源代码存档的内容。

添加如下行:

src export-ignore
Run Code Online (Sandbox Code Playgroud)

从生成的源包的一部分中排除目录“src”。在内部,github 使用“git archive”根据标签创建包 - 而“git archive”可以通过“.gitattributes”进行控制。

不知道能不能完全避免生成源码包——但这至少是一种控制源码包内容的变通方法


Ber*_*tel 6

要创建新版本并上传其他二进制文件,您可以:

  • 使用创建发布POST /repos/:username/:repo/releases并存储upload_url响应中的字段
  • 通过上传自己的资源POST $upload_url与其他参数name和可选的label(参见

一个简单的例子使用bashcurljq(JSON解析器):

#!/bin/bash

token=YOUR_TOKEN
repo=username/your-repo

upload_url=$(curl -s -H "Authorization: token $token"  \
     -d '{"tag_name": "test", "name":"release-0.0.1","body":"this is a test release"}'  \
     "https://api.github.com/repos/$repo/releases" | jq -r '.upload_url')

upload_url="${upload_url%\{*}"

echo "uploading asset to release to url : $upload_url"

curl -s -H "Authorization: token $token"  \
        -H "Content-Type: application/zip" \
        --data-binary @test.zip  \
        "$upload_url?name=test.zip&label=some-binary.zip"
Run Code Online (Sandbox Code Playgroud)

  • 很酷,它有效。我想知道是否可以删除zip下载的源代码? (2认同)
  • 您忽略了“如何在没有源代码的情况下发布版本?” 部分。 (2认同)