使用GitHub的发布功能,可以提供一个链接来下载已发布软件的特定版本。然而,每次发布时,gh-page也需要更新。

有没有一种方法可以获取到软件最新版本的特定文件的链接?

例如,这将是一个静态链接:

https://github.com/USER/PROJECT/releases/download/v0.0.0/package.zip

我想要的是:

https://github.com/USER/PROJECT/releases/download/latest/package.zip

注意:这个问题和 GitHub最新发布 这个问题特别要求访问文件, 而不是GitHub最新发布的页面


当前回答

另一个Linux解决方案使用curl和wget从最新版本页面下载单个二进制文件

curl -s -L https://github.com/bosun-monitor/bosun/releases/latest | egrep -o '/bosun-monitor/bosun/releases/download/[0-9]*/scollector-linux-armv6' | wget --base=http://github.com/ -i - -O scollector

解释:

curl -s -L是无声地下载最新版本的HTML(在执行重定向之后)

鹭-o '…'使用正则表达式找到你想要的文件

wget——base=http://github.com/ -i将管道的相对路径转换为绝对URL

和-O sccollector设置所需的文件名。

如果文件更新,可以添加-N到下载,但S3给出了403禁止错误。

其他回答

我想从README下载版本。Md文件在存储库描述中。在那里,我无法执行JavaScript。

我可以为我所有的存储库在README文件或github页面中添加这样的链接:

https://niccokunzmann.github.io/download_latest/ <用户名> / <库> / <文件> 从存储库下载最新的发布文件。 https://niccokunzmann.github.io/download_latest/ <文件> 这是因为JavaScript引用器已经设置好,要下载的存储库是通过document.referrer确定的。因此,该链接也适用于分叉。

你可以在这里找到源代码,fork或使用我的repo。

链接到版本帮助页面确实提到了“最新版本”按钮,但这并没有给你一个下载链接。

https://github.com/reactiveui/ReactiveUI/releases/latest

为此,你需要首先获得最新的标签(如“GitHub URL For最新发布的下载文件?”所述):

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

curl -L https://github.com/reactiveui/ReactiveUI/releases/download/$latestTag/ReactiveUI-$latestTag.zip

使用curl和jq从命令行检索最新版本的第一个文件:

curl -s https://api.github.com/repos/porjo/staticserve/releases/latest | \
  jq --raw-output '.assets[0] | .browser_download_url'

晚了几年,但我只是实现了一个简单的重定向到支持https://github.com/USER/PROJECT/releases/latest/download/package.zip。这应该重定向到最新的带标签的package.zip发行资产。希望它很方便!

Github现在支持从最新版本下载单个文件的静态链接:https://help.github.com/en/articles/linking-to-releases

https://github.com/USER/PROJECT/releases/latest/download/package.zip