在Github上托管Eclipse更新站点是否可行?

32

我正在使用GitHub开发Eclipse插件,想要为我的插件建立一个公共的Eclipse更新站点。我能在GitHub上做到吗?

我知道GitHub可以通过使用文件信息页面提供的“raw”链接来托管单个文件。


https://dev59.com/zW7Xa4cB1Zd3GeqPrI5g#14916525 可能没有帮助,也许可以作为一个压缩的p2更新?我在下面的我的编辑答案中提到了这一点。 - VonC
7个回答

14

不要使用Github项目发布功能,那不能作为真正的更新站点(请参见末尾的注释)。

要实现您想要的功能,您可以创建一个Github仓库,将p2仓库提交/推送到其中,然后使用原始链接将其作为更新站点提供服务。 例如,对于仓库:

https://github.com/some-user/some-repository/

您可以使用以下链接将其作为更新站点提供服务:

https://github.com/some-user/some-repository/raw/master/

注释:是的,如果在浏览器中打开更新站点链接,GitHub将不会给您文件列表,而是404。但没关系。 Eclipse更新站点机制不需要父链接有效。相反,Eclipse将直接查找<update-site URL>/artifacts.jar(或.xml),并从artifacts.jar中的信息自行发现存储在更新站点中的其他工件的URL。据我所知,Eclipse更新机制在任何时候都不需要Web服务器列出目录中的文件。

注2:如果使用Github项目发布,则只能附加已压缩的p2仓库。那不是一个合适的更新站点,因为它是一个静态仓库:没有URL可以将新发布上传到。 Eclipse将无法自动发现新的更新,而是用户需要下载每个要更新到的新版本的zip文件。 (此外,使用合适的更新站点只会下载安装/更新/查询所需的必要工件-这是一个小优势)


3
关于大型仓库和Github使用的说明。此链接描述了Github对限制的期望:https://help.github.com/articles/what-is-my-disk-quota - "经验法则:每个仓库1GB,每个文件100MB"。这对于大多数Eclipse更新站点来说应该是足够的。如果它变得太大,您可以重置基础Git仓库。 - BrunoMedeiros
感谢分享有关原始链接以公开服务Github文件夹的信息。 - Chandrayya G K
1
我尝试了这个方法(这是我的更新站点:https://github.com/eyala/pig-eclipse-update-site),但很奇怪,它似乎只对Linux上的Eclipse有效,而从Windows计算机上,我既无法安装也无法更新。还有其他人遇到这个问题吗? - Eyal
2
我刚刚尝试从 https://github.com/eyala/pig-eclipse-update-site/raw/master 在 Windows 上安装你的功能(Pig Latin),安装成功了。 - BrunoMedeiros

10

Github Pages 不是一个适合更新站点的地方。

Github Pages可能无法有效地提供大型二进制文件,正如这个问题所解释的那样。如果你的JAR文件很小,放置二进制文件在其中可能还可以,但总体上他们建议不要将二进制文件放在这里。相反,他们建议将二进制文件放在存储库的下载部分中。如果这种情况改变了,我会很高兴,因为通过推送到 Github 来发布更新站点将非常方便。

目前,人们必须使用他们的API以编程方式上传文件到下载部分。回答另一篇问题指出了一些库和脚本,它们使用此API用于Java/Maven、Perl、Ruby等语言。


5

现在您可以在一个发布页面(2013年7月)中尝试它。

参见“如何在Github上发布项目发布版(二进制/源代码包)?


原始回答(2013年1月)

我没有测试过,但从技术上讲,p2存储库可以在任何共享路径(无论是文件系统共享还是基于Web的共享)中定义

您只需要:


4
我遇到的问题是,GitHub 将目录和文件作为 HTML 页面提供。要访问文件的内容,需要使用“raw”链接。但是,我的更新站点由多个文件和文件夹组成,因此我认为需要找到一种从 GitHub 获取“raw”目录的方法。或者,是否可以创建一个压缩文件的更新站点,其中所有文件都存储在单个存档中? - mchr
@mchr:我认为更新站点不能是一个单一的zip文件。至于原始目录列表,可以向http://support.github.com/提问:http://support.github.com/discussions/site/1444-downloaded-filename-for-rawtrue-links可能会有所帮助:在GitHub地址中用“raw”替换“tree”。 - VonC
看起来,如果您使用存储库的根目录,并在URL中使用“raw”,就像@BrunoMedeiros在他的答案中建议的那样,更新站点就可以正常工作。 - Eyal

4
Github Pages 功能允许您托管任意文件夹中的文件,而无需将每个文件转换为 Github 页面。请访问http://pages.github.com/

Github Pages 不是一个适合更新站点的地方。请参见下面的答案。如果您的 JAR 文件很小,那么可能没问题,但总体上他们建议不要在那里放置二进制文件。 - fmjrey

2
我使用GitHub页面功能成功托管了Eclipse更新站点。由于我觉得有些部分不太好理解,所以在这里简单介绍一下我所遵循的步骤。
构建您的Eclipse插件项目,并在本地工作站上进行测试。 添加一个特性项目,并添加您的插件。还要设置描述、版权和许可证信息。 为您的存储库配置一个发布源。我认为/docs文件夹是最容易使用的。生成起始网站的一种方法是转到GitHub存储库设置页面,并启动自动页面生成器。 在/docs文件夹中创建一个更新站点项目。将其放在明显的文件夹中,例如update。 创建一个类别,并将特性添加到更新项目中。 单击“全部构建”按钮以生成jar文件。 提交并推送所有更改。 尝试从更新站点安装。 一旦更新站点运行正常,您可以将您的插件发布到Eclipse市场。这是可选的,只是让您的插件更容易找到。
正如其他人所提到的,GitHub页面不支持巨大的二进制文件,因此这只适用于小型项目。要查看示例,请参阅我的Python实时编码项目

1

不,现在不再可能了,下载API 已正式弃用

来自GitHub博客:

然而,一些项目需要托管和分发大型二进制文件,除了源存档。如果您也有这样的需求,我们建议使用许多出色的专门为此目的存在的服务,例如Amazon S3 / Amazon CloudFront或SourceForge。请查看我们的帮助文章,以了解如何分发大型二进制文件。

请参阅有关分发大型二进制文件的帮助文章


0
原来你可以使用GitHub Releases来托管p2更新站点。主要问题在于,GitHub Releases将所有文件都托管在一个平面目录结构下。然而,Eclipse p2存储库默认是分层次的。由于Eclipse Tycho(实际上是p2)不允许您配置平面p2存储库结构,因此您需要编写脚本。
该脚本需要执行两个操作:
- 将plugins/features/下的每个文件移动到p2存储库的根目录下。 - 在artifacts.xml文件中,用/替换/plugins//features/的所有引用,这些文件被压缩在artifacts.jarartifacts.xml.xz中。
可能有几种方法可以实现它,但在这篇博客文章中,您可以看到一种依赖于JBang脚本来实现所需目标的实现方式:

https://fbricon.github.io/posts/use-github-releases-as-p2-repo/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接