首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >最新版本的_download file_?的GitHub URL?

最新版本的_download file_?的GitHub URL?
EN

Stack Overflow用户
提问于 2014-06-06 23:52:49
回答 7查看 14.1K关注 0票数 36

尽管这个问题类似于GitHub latest release,但它实际上是不同的--它是关于一个链接,它意味着“下载文件本身的最新版本”。

GitHub提供了一个“最新”的网址,可以重定向到最新版本的信息页面。例如:https://github.com/reactiveui/ReactiveUI/releases/latest将重定向到https://github.com/reactiveui/ReactiveUI/releases/tag/5.99.6 (在我输入的时候;或者将来某一天会重定向到更新版本的页面)。

这很好,但我需要下载文件本身的URL。在本例中,与绿色download按钮https://github.com/reactiveui/ReactiveUI/releases/download/5.99.6/ReactiveUI-5.99.6.zip关联的.zip文件(在我输入的时候;或者将来某一天将其转换为一个更新的压缩文件)。

为什么?我想将URL提供给curl,作为Travis CI脚本的一部分,以下载最新版本。

我猜有几个URL,比如/releases/download/latest/file.zip (用"latest“代替版本部分)和/release/download/file.zip,但那404。

有没有办法做到这一点--在shell脚本和curl的上下文中(注意:不是在使用JS的浏览器页面中)?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-06-07 07:52:56

正如@florianb指出的那样,我应该使用git。

最初我的.travis.yml是这样的:

代码语言:javascript
复制
before_install:
- curl -L https://raw.githubusercontent.com/greghendershott/travis-racket/master/install-racket.sh | bash

这将自动从repo中获取任何最新版本。

但有人向我指出,GitHub不希望人们使用raw.github.com进行下载。相反,人们应该使用"releases“。因此,我是一个很好的doob,并且每次都手动发布。然后我的.travis.yml是这样的:

代码语言:javascript
复制
before_install:
- curl -L https://github.com/greghendershott/travis-racket/releases/download/v0.6/install-racket.sh | bash

但每次发布都是一件很糟糕的事情。更糟糕的是,所有.travis.yml文件都需要更新以指向文件的较新版本。

相反,只需使用git克隆存储库,并使用其中的文件:

代码语言:javascript
复制
before_install:
- git clone https://github.com/greghendershott/travis-racket.git
- cat travis-racket/install-racket.sh | bash # pipe to bash not sh!
票数 -2
EN

Stack Overflow用户

发布于 2015-04-08 08:09:19

如果你在发行版中只有一次下载,这里有一种方法可以在没有Github的情况下完成:

代码语言:javascript
复制
wget $(curl -s https://api.github.com/repos/USERNAME/REPONAME/releases/latest | grep 'browser_' | cut -d\" -f4)

这非常简单(尽管不是很好),当然,如果您想通过管道将wget传递给某个对象,可以将其替换为另一个curl调用。

基本上,curl调用为您提供了一个JSON结构,我只是使用基本的shell实用程序来提取下载的URL。

票数 22
EN

Stack Overflow用户

发布于 2014-06-07 00:25:03

非常有趣,我还没有注意到GitHub中的“最新”标签--发布。正如我现在所了解的,如果你使用的是GitHubs release-system的“预发布”-capabilities,它们是免费的。但是我不知道任何通过最新路径访问二进制文件的方法。

我建议您使用git (在您的travis-vm中提供)来下载最新的标签。

就像Julien Renault在他的博客post中描述的那样,你可以像这样签出存储库中的最新标签:

代码语言:javascript
复制
# this step should be optional
git fetch --tags

latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)
git checkout $latestTag

该解决方案基于最新标签也是最新版本的假设。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24085978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档