【问题标题】:How to use Github Release API to make a release without source code?如何使用 Github Release API 进行无源代码发布?
【发布时间】:2017-12-27 15:55:21
【问题描述】:

我正在使用 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 发布选项卡上找不到二进制文件。

【问题讨论】:

    标签: git github github-api


    【解决方案1】:

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

    添加如下行:

    src export-ignore
    

    从生成的源包中排除目录“src”。 github 内部使用“git archive”基于标签创建包 - “git archive”可以通过“.gitattributes”控制。

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

    【讨论】:

    • 不错。这至少应该被标记为问题标题的答案
    【解决方案2】:

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

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

    【讨论】:

    • 酷,它有效。不知能否去掉源码zip下载?
    • 我不这么认为,因为版本基于git tags,Github 会自动显示它绑定的 SHA id 并提供此标签的源存档链接。但是,您可以使用 target_commitish 字段(默认为 master 分支)在特定提交/分支处创建/更新版本
    • 如果我使用付费的github账号怎么办?那可以删除源代码zip吗?
    • 如果我使用付费的github账号怎么办?那可以删除源代码zip吗?
    • 您忽略了“如何在没有源代码的情况下发布版本?”部分。
    【解决方案3】:

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

    【讨论】:

    • 如果无法删除源代码附件,如何上传额外的二进制文件?我尝试使用 API Upload a release asset,它成功返回,但我在 Github 发布选项卡上找不到二进制文件。
    猜你喜欢
    • 2019-09-03
    • 1970-01-01
    • 2014-04-28
    • 2010-11-30
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多