我希望在我的网站上有“下载最新版本”按钮,该按钮代表最新版本的链接(存储在 GitHub版本)。我尝试创建名为“latest”的发布标记,但是当我尝试加载新版本时(与标记创建日期混淆,标记交换等),它变得复杂了。手动更新我网站上的下载链接也是一项耗时且严格的任务。我看到了唯一的方法 - 将所有下载按钮重定向到一些html,然后重定向到实际的最新版本。
请注意,我的网站托管在GitHub Pages(静态托管),所以我只是无法使用服务器端脚本来生成链接。有什么想法吗?
答案 0 :(得分:15)
Github现在提供了一个"最新版本"项目发布页面上的按钮,创建第一个版本后。
在您提供的示例中,此按钮链接到https://github.com/reactiveui/ReactiveUI/releases/latest
答案 1 :(得分:10)
您无需任何脚本即可为最新版本生成下载链接。只需使用以下格式:
https://github.com/:owner/:repo/zipball/:branch
示例:
https://github.com/webix-hub/tracker/zipball/master
https://github.com/iDoRecall/selection-menu/zipball/gh-pages
如果由于某种原因您想获得最新版本下载的链接,包括其版本号,您可以从get latest release API获取该链接:
GET /repos/:owner/:repo/releases/latest
示例:
$.get('https://api.github.com/repos/idorecall/selection-menu/releases/latest', function (data) {
$('#result').attr('href', data.zipball_url);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a id="result">Download latest release (.ZIP)</a>
答案 2 :(得分:3)
自February 18th, 2015起,GitHUb V3 release API有一个get latest release API。
GET /repos/:owner/:repo/releases/latest
答案 3 :(得分:2)
也许您可以使用一些客户端脚本并通过调用GitHub API来动态生成链接的目标,通过一些JQuery魔术?
Releases API提供了一种指向 retrieve the list of all the releases from a repository 的方法。例如, this link 会返回所有 releases of the ReactiveUI project 的Json格式列表。
提取第一个将返回最新版本。
在此有效载荷中:
html_url
属性将保留要构建的网址的第一部分(即。https://github.com/{owner}/{repository}/releases/{version}
)。
assets
数组将列出可下载的档案。每个asset
都会带有name
属性
构建目标下载URL只需要几个字符串操作。
download/
段和版本号releases/
关键字
生成的网址格式如下:https://github.com/{owner}/{repository}/releases/download/{version}/name_of_asset
例如,关于上面链接ReactiveUI链接中的Json有效负载,我们有html_url: "https://github.com/reactiveui/ReactiveUI/releases/5.99.0"
和一个name: "ReactiveUI.6.0.Preview.1.zip"
的资产。
因此,下载网址为https://github.com/reactiveui/ReactiveUI/releases/download/5.99.0/ReactiveUI.6.0.Preview.1.zip
答案 4 :(得分:1)
您可以使用以下地址:
curl -L https://api.github.com/repos/${Organization}/${Repository}/tarball > ${Repository}.tar.gz
.tar.gz文件中的顶级目录在目录名称中具有提交的sha哈希,如果您需要以自动方式更改为生成的目录并执行某些操作,则可能会出现问题。
以下方法将其删除,并将文件保留在具有可预测名称的文件夹中。
mkdir ${Repository}
curl -L https://api.github.com/repos/${Organization}/${Repository}/tarball | tar -zxv -C ${Repository} --strip-components=1
答案 5 :(得分:1)
由于我没有在这里看到答案,但是在运行持续集成测试时对我来说非常有帮助,这个仅需要你卷曲的单行将允许搜索Github repo&#39; s发布以下载最新版本
https://gist.github.com/steinwaywhw/a4cd19cda655b8249d908261a62687f8
我使用它在我们的存储库中使用以下脚本运行PHPSTan
https://gist.github.com/rvanlaak/7491f2c4f0c456a93f90e31774300b62
答案 6 :(得分:0)
如果您使用PHP,请尝试按照代码:
function getLatestTagUrl($repository, $default = 'master') {
$file = @json_decode(@file_get_contents("https://api.github.com/repos/$repository/tags", false,
stream_context_create(['http' => ['header' => "User-Agent: Vestibulum\r\n"]])
));
return sprintf("https://github.com/$repository/archive/%s.zip", $file ? reset($file)->name : $default);
}
功能用法示例
echo '<a href="' .getLatestTagUrl('OzzyCzech/vestibulum') .'">Download</a>';
答案 7 :(得分:0)
正如@Dan Dascalescu在对已接受答案的评论中所指出的那样,有些项目(大约30%)不会理会正式发布,因此“最新发布”按钮或/ releases / latest API调用均不会返回有用的数据。
要可靠地获取GitHub项目的最新版本,可以使用lastversion。