从github项目分发二进制文件的最佳做法是什么?

从github项目分发二进制文件的最佳做法是什么?

我能想到:

  • 在您的项目中创build一个二进制文件副本的bin文件夹。 但是,github是为了存储源代码,而不是二进制文件存储大而定期更改的二进制文件可能是昂贵的磁盘空间和带宽?
  • 将二进制文件的副本上传到项目的github页面 ,或使用单独的网站托pipe您的二进制文件。 然而,这并不总是可行的,并且需要更多(手工)的工作来保持二进制文件的更新,我宁愿要自动更新二进制文件或者只用一个动作。

截至2012年12月11日, GitHub上的下载function已被弃用 。 文章分发大型二进制文件build议使用外部服务:

我们build议Amazon S3与CloudFront配合使用,以便通过CDN或其他服务(如SourceForge)提供服务。


但是, 自2013年7月2日起 ,您现在可以定义一个版本

发布 ,将软件运送到最终用户的工作stream程。
发布是具有更新日志和二进制资源的一stream对象,它们呈现超出Git构件的完整项目历史logging。 他们可以从存储库的主页访问:

主页

  • 发行版附带发行说明和链接以下载软件或源代码。
  • 遵循许多Git项目的约定,发布与Git标签绑定。 您可以使用现有标签,也可以让版本在发布时创build标签。
  • 您还可以将二进制资源(如编译的可执行文件,缩小脚本,文档)附加到发行版 。 一旦发布,任何人都可以查看版本库的版本信息和资产。

发布

现在很清楚, 不要在你的github项目中存储二进制文件。 因此,您需要在其他地方存储二进制文件。 我遇到的可能的解决scheme是:

  • 将二进制文件存储在一个单独的子模块中( dalores idea )。 将它们存储在您的项目github页面中是有意义的,您可以使用它来通过github托pipe您的项目网站。
  • 如果您只有几个二进制文件或zip文件,您可以通过下载 – >上传一个新file upload到github。 这个function是相当有限的,但是你不能把文件放在结构化的文件夹中。
  • 在java jar文件的情况下,有像Nexus这样的解决scheme来pipe理你的库。
  • 将二进制文件存储在您自己托pipe的完全独立的站点上

什么样的二进制文件? 二进制文件在某个时刻一定是从源头上来的?

因此,在git中添加构build这些二进制文件的源代码作为子模块。 然后在构build过程中先构build这些二进制文件,然后再构build源代码。 子模块保持与您所知道的特定版本的源同步。 由于您有源代码,因此您也可以更轻松地进行debugging。

除非二进制文件是图像等,然后只存储这些。

如果空间是问题使用bitbucket,因为他们有无限的空间。