如何使用脚本在 GitHub 上发布构建工件资产? [英] How to release a build artifact asset on GitHub with a script?

查看:27
本文介绍了如何使用脚本在 GitHub 上发布构建工件资产?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试找出在 GitHub 上生成构建的单一命令过程.

我期望做的是运行某种命令-make release,比如说,make release脚本构建发布工件,然后以某种方式将其上传到GitHub.

然而,我对如何在 GitHub 上实际获取发布工件感到相当困惑.源代码很棒,但并不是每个人都想做自己的构建.:-)

解决方案

,即于 2012 年 12 月删除

<小时><块引用>

make 发布脚本构建发布工件,然后以某种方式将其上传到 github.

这意味着将它(它"是由一个或多个文件组成的交付,通常包括二进制文件)添加到常规本地存储库,然后将该存储库推送到其匹配的 GitHub 存储库.

话虽如此,在任何发布"任务中都没有提及 GitHub 的原因是因为 Git 是一个源代码控制管理系统,不适合二进制文件.

它当然可以拥有这些文件(二进制文件),但不会定期拥有它们,因为一段时间后 repo 的大小会变得臃肿:每次克隆都会花费越来越长的时间.
请参阅Git 限制是什么,以及git - 源文件和存储库应该在同一台机器?".

I am trying to figure out a one-command process for generating a build on GitHub.

What I anticipate doing is running some sort of command- make release, say, and the make release script builds up the release artifact and then uploads it to GitHub in some fashion.

However, I'm fairly confused about how to actually get a release artifact on GitHub. Source code is awesome, but not everyone wants to do their own builds. :-)

解决方案

Update September 2013, you can automate a release (API in preview mode)

Update January 2014, there's an unofficial command-line app, called github-release by Nicolas Hillegeer (aktau), for creating releases and uploading (binary) artifacts.
It uses the new github releases API mentioned above. Look at the Makefile of the project to see how to automate it more still.

Example:

# create a formal release
$ github-release release 
    --user aktau 
    --repo gofinance 
    --tag v0.1.0 
    --name "the wolf of source street" 
    --description "Not a movie, contrary to popular opinion. Still, my first release!" 
    --pre-release


This API is a little different due to the binary assets. We use the Accept header for content negotation when requesting a release asset.
Pass a standard API media type to get the API representation:

$ curl -i -H "Authorization: token TOKEN" 
     -H "Accept: application/vnd.github.manifold-preview" 
     "https://uploads.github.com/repos/hubot/singularity/releases/assets/123"

HTTP/1.1 200 OK

{
  "id": 123,
...
}

Pass "application/octet-stream" to download the binary content.

$ curl -i -H "Authorization: token TOKEN" 
     -H "Accept: application/octet-stream" 
     "https://uploads.github.com/repos/hubot/singularity/releases/assets/123"

HTTP/1.1 302 Found

Uploads are handled by a single request to a companion "uploads.github.com" service.

$ curl -H "Authorization: token TOKEN" 
     -H "Accept: application/vnd.github.manifold-preview" 
     -H "Content-Type: application/zip" 
     --data-binary @build/mac/package.zip 
     "https://uploads.github.com/repos/hubot/singularity/releases/123/assets?name=1.0.0-mac.zip"


Update 2d July 2013, you now can define a release.

  • Releases are accompanied by release notes and links to download the software or source code.
  • Following the conventions of many Git projects, releases are tied to Git tags. You can use an existing tag, or let releases create the tag when it's published.
  • You can also attach binary assets (such as compiled executables, minified scripts, documentation) to a release. Once published, the release details and assets are available to anyone that can view the repository.

This is what replaces the old binary upload service, which was removed in December 2012!


the make release script builds up the release artifact and then uploads it to github in some fashion.

That would mean adding it ("it" being the delivery made of one or several files, generally including binaries) to a regular local repo, and then pushing that repo to its matching GitHub repo.

That being said, the reason GitHub isn't mention in any "release" task is because Git is a source control management system, and is ill-suited for binaries.

It can have those files (binaries) of course, but isn't made to have them regularly, because of the bloated size of the repo after a while: each cloning would take longer and longer.
See What are the Git limits, and also "git - should source files and repository be on the same machine ?".

这篇关于如何使用脚本在 GitHub 上发布构建工件资产?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆