_download file_的最新版本的GitHub URL?

Gre*_*ott 22 github

虽然这个问题是相似GitHub的最新版本,它实际上是不同的-它是关于一个链接,意思是"最新版本的下载文件本身".

GitHub提供了一个"最新"URL,可以重定向到最新版本的信息页面.例如:https://github.com/reactiveui/ReactiveUI/releases/latest将重定向到https://github.com/reactiveui/ReactiveUI/releases/tag/5.99.6(因为我输入此内容;或者到页面对于更新的版本,总有一天).

这很好,但我需要一个下载文件本身的URL .在此示例中,与绿色下载按钮关联的.zip文件, https://github.com/reactiveui/ReactiveUI/releases/download/5.99.6/ReactiveUI-5.99.6.zip(因为我输入此内容;或者有一天,一个较新的zip文件.

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

我猜到了几个URL,比如/ releases/download/latest /file.zip(用"latest"代替版本部分)和/releases/download/file.zip但是那些404.

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

hay*_*kam 24

对于资产名称中不包含版本号或其他变量内容的版本,您可以使用以下格式的 URL:

https://github.com/所有者/存储库/版本/最新/下载/ ASSET.ext

根据文档

如果您想直接链接到最新发布资产的下载,您可以链接到/owner/name/releases/latest/download/asset-name.zip


The*_*ill 15

如果您在发行版中只有一个下载,这是一种不使用Github的方法:

wget $(curl -s https://api.github.com/repos/USERNAME/REPONAME/releases/latest | grep 'browser_' | cut -d\" -f4)
Run Code Online (Sandbox Code Playgroud)

这很容易(虽然不是很漂亮),当然如果你想把它换成什么东西,你可以换掉wget用于另一个curl调用.

基本上,curl调用会给你一个JSON结构,我只是使用基本的shell实用程序来提取下载的URL.


Gre*_*ott -1

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

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

before_install:
- curl -L https://raw.githubusercontent.com/greghendershott/travis-racket/master/install-racket.sh | bash
Run Code Online (Sandbox Code Playgroud)

这将自动从存储库中获取最新版本。

但有人向我指出,GitHub 不希望人们用于raw.github.com下载。相反,人们应该使用“发布”。所以我是一个好人,每次都手动发布。然后我的 .travis.yml 是这样的:

before_install:
- curl -L https://github.com/greghendershott/travis-racket/releases/download/v0.6/install-racket.sh | bash
Run Code Online (Sandbox Code Playgroud)

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

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

before_install:
- git clone https://github.com/greghendershott/travis-racket.git
- cat travis-racket/install-racket.sh | bash # pipe to bash not sh!
Run Code Online (Sandbox Code Playgroud)