【问题标题】:what is the best practice of distributing binaries from a github project? [closed]从 github 项目分发二进制文件的最佳实践是什么? [关闭]
【发布时间】:2012-05-07 22:48:15
【问题描述】:

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

我能想到:

  • 在您的项目中创建一个 bin 文件夹,用于保存二进制文件的副本。 然而,github 是用来存储源代码而不是二进制文件的。 定期更改二进制文件可能会占用大量磁盘空间和带宽?
  • 将二进制文件的副本上传到github pages 项目,或使用单独的网站来托管您的二进制文件。 然而,这并不总是可行的,需要更多的(手工)工作来保持 二进制文件是最新的,我宁愿让二进制文件自动更新或使用 单一动作。

【问题讨论】:

  • 这个问题是关于在哪里托管二进制文件,以及关于在哪里托管文件的建议
  • @random 我把它读作一个关于如何使用 github 的问题。

标签: github binary distribute


【解决方案1】:

截至 2012 年 12 月 11 日,Downloads feature on GitHub is deprecated。文章Distributing large binaries推荐使用外部服务:

我们建议将Amazon S3 用于存储与CloudFront 配对用于服务 通过 CDN 或其他服务,例如 SourceForge


不过,since 2d July 2013,您现在可以定义一个版本

发布,将软件发送给最终用户的工作流程。
发布是一流的对象,带有变更日志和二进制资产,提供了 Git 工件之外的完整项目历史。可以从存储库的主页访问它们:

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

【讨论】:

  • “github pages”是公开的。 “github 发布”需要一个 github 帐户。 :-(
  • 是的,github 已经发布了。我刚刚创建了我的第一个项目,推送了源代码,进入了 GitHub Web UI 中的“releases”,创建了一个新版本(输入了所需的版本号,GitHub 将它变成了我的 repo 中的标签),然后我能够使用我的二进制文件上传文件。 GitHub 在源代码中添加了一个 TGZ nad ZIP,因此有三个文件可供下载。非常干净和无缝。感谢这个话题顺便说一句。让我走上正轨。
【解决方案2】:

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

  • 将二进制文件存储在单独的子模块 (dalores idea) 中。将它们存储在您的项目中是有意义的 github pages,您可以使用它通过 github 托管您的项目网站。
  • 如果您只有几个二进制文件或 zip 文件,您可以通过下载 -> 上传新文件将它们上传到 github。但此功能非常有限,您不能将文件放在结构化文件夹中。
  • 如果是 java jar 文件,可以使用 Nexus 等解决方案来管理您的库。
  • 将二进制文件存储在您自己托管的完全独立的网站上

【讨论】:

  • 为什么不在你的 github 项目中存储二进制文件很重要?
  • 您的源代码通常处于持续开发中,一直有很多提交和小的更改。另一方面,二进制文件是代码稳定版本的生成版本,在发布后永远不会改变。对于二进制文件,您希望有一个列出所有已发布版本的目录,而不仅仅是最新版本。这是完全相反的。
  • GitHub 上传现已弃用。见github.com/blog/1302-goodbye-uploads
  • 将大型二进制文件添加到您的存储库会导致下载历史记录需要很长时间。
【解决方案3】:

什么样的二进制文件?二进制文件一定在某个时候来自源代码,对吧?

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

除非二进制文件是图像等,否则只需存储它们。

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

【讨论】:

  • 例如,我有一个从 java 项目生成的 java 库 (jar)。我需要存储这个库,以便库的用户可以下载它,而不必自己构建库。随着开发的继续,我还需要存储不同版本的 jar(1.3.0、1.3.1、1.4.0 等)。
  • 对于jar文件不能存储在nexus中使用maven下载依赖吗?那是标准的java方式。见stackoverflow.com/questions/3329041/…
  • 谢谢,这是有道理的。因此,至少很明显,最好不要将 jar 和二进制文件存储在 git 本身中,而是使用外部解决方案。
  • 是的,这不是一个现成的答案,但它为我指明了正确的方向。我已将遇到的解决方案放在单独的答案中。
猜你喜欢
  • 2010-10-08
  • 2010-09-13
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
相关资源
最近更新 更多