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

时间:2017-07-21 14:33:22

标签: git github github-api

我正在使用blow命令在Github repo上发布一个版本:

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

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

Source code (zip)
Source code (tar.gz)

如何在没有源代码的情况下发布?

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

3 个答案:

答案 0 :(得分:4)

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

  • 使用POST /repos/:username/:repo/releases创建发布,并存储响应中的upload_url字段
  • 使用POST $upload_url上传您的资源,其中包含其他参数name和可选label(请参阅this

使用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"

答案 1 :(得分:1)

我认为你不能在社区版上。您可以将小二进制文件附加到该版本。我相信这是GitHub的工作方式,因为它以浏览代码为导向,提供源代码是重要的部分。

答案 2 :(得分:1)

您可以使用.gitattributes文件控制sorcecode归档文件的内容,以使其自动生成(并使其成为存储库的一部分)。

添加以下行:

src export-ignore

将目录“ src”排除在生成的源程序包之外。 github内部使用“ git archive”基于标签创建软件包-可以通过“ .gitattributes”控制“ git archive”。

不知道您是否可以避免完全生成源代码包-但这至少是一种控制源代码包内容的解决方法