使用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最新发布的页面


当前回答

如果回购只是使用标签而不是发布——参考jQuery——基于一个URL的解决方案是行不通的。

相反,您必须查询所有标记,对它们进行排序并构造下载URL。我为语言Go和jQuery实现了这样一个解决方案:链接到Github。

也许,这对某些人有帮助。

其他回答

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

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

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

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

在PHP -重定向到最新版本下载。简单地放在你的网络空间

<?php

/**
 * Download latest release from github release articats
 * License: Public Domain
 */

define('REPO', 'imi-digital/iRobo');

$opts = [
    'http' => [
        'method' => 'GET',
        'header' => [
            'User-Agent: PHP'
        ]
    ]
];

$context = stream_context_create($opts);

$releases = file_get_contents('https://api.github.com/repos/' . REPO . '/releases', false, $context);
$releases = json_decode($releases);

$url = $releases[0]->assets[0]->browser_download_url;

header('Location: ' . $url);

如果你想在alpine中使用,请遵循以下步骤:

 apk add curl ca-certificates wget
wget -q $(curl -s https://api.github.com/repos/<USER>/<REPOSITORY>/releases/latest | grep browser_download_url | grep "$ARCH" | cut -d '"' -f 4)

wget中的-q标志是安静模式。如果您想查看输出,那么使用不带-q的参数。

使用(内部)wget获取HTML内容,过滤zip文件(使用egrep),然后下载zip文件(使用外部wget)的解决方案。

wget https://github.com/$(wget https://github.com/<USER>/<PROJECT>/releases/latest -O - | egrep '/.*/.*/.*zip' -o)

简单的命令,工作和下载最新的包可用的github发行版

curl -ks https://api.github.com/repos/<reponame>/releases/latest | grep "browser_download_url.*linux-amd64.tar.gz" | cut -d : -f 2,3 | tr -d \" | xargs wget --no-check-certificate

Reponame -替换它与github repo与可用的包 释放 可以根据需要替换包的.tar.gz类型。除 . zip等