Télécharger la dernière version de GitHub
j'aimerais avoir " télécharger la dernière Version " bouton sur mon site web qui représenterait le lien vers la dernière version (stocké à GitHub Releases ). J'ai essayé de créer une étiquette de publication nommée "dernière" , mais cela s'est compliqué lorsque j'ai essayé de charger une nouvelle version (confusion avec la date de création de l'étiquette, échange de l'étiquette, etc.). La mise à jour manuelle des liens de téléchargement sur mon site web est également une tâche fastidieuse et scrupuleuse. Je vois la seule façon-rediriger tous les boutons de téléchargement vers quelque html, qui à son tour sera redirigé vers la dernière version réelle.
notez que mon site web est hébergé sur des Pages GitHub (hébergement statique), donc je ne peux pas utiliser pour générer des liens. Des idées?
7 réponses
GitHub fournit maintenant un bouton" dernière version "sur la page de version d'un projet, après que vous ayez créé votre première version .
dans l'exemple que vous avez donné, ce bouton renvoie à https://github.com/reactiveui/ReactiveUI/releases/latest
Vous n'avez pas besoin de script pour générer un lien de téléchargement de la dernière version. Utilisez simplement ce format:
https://github.com/:owner/:repo/zipball/:branch
exemples:
https://github.com/webix-hub/tracker/zipball/master
https://github.com/iDoRecall/selection-menu/zipball/gh-pages
si, pour une raison quelconque, vous souhaitez obtenir un lien vers la dernière version téléchargeable, y compris son numéro de version, vous pouvez obtenir ce lien à partir du get latest release API :
GET /repos/:owner/:repo/releases/latest
exemple:
$.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>
depuis le 18 février 2015 , le GitHub V3 release API a un get latest release API .
GET /repos/:owner/:repo/releases/latest
peut-être pourriez-vous utiliser des scripts côté client et générer dynamiquement la cible du lien en invoquant l'api GitHub, par une magie de JQuery?
l'API Releases expose un moyen de extraire la liste de toutes les versions d'un dépôt . Par exemple, ce lien retour à une liste formatée par Json de tous les communiqués du projet Réactiveui .
extraire le premier retournerait la dernière version.
dans cette charge utile:
-
Le
html_url
attribut assurera la première partie de l'url à construire (ie.https://github.com/{owner}/{repository}/releases/{version}
). -
le tableau
assets
affichera la liste des archives téléchargeables. Chaqueasset
portera unname
attribut
la construction de l'url de téléchargement cible n'est qu'à quelques opérations de chaîne de caractères.
- insérer le mot-clé
download/
entre le segmentreleases/
du html_url et le numéro de version - ajouter le nom du bien à télécharger
l'url résultante sera du format suivant: https://github.com/{owner}/{repository}/releases/download/{version}/name_of_asset
par exemple, en ce qui concerne la charge utile Json du lien Réactiveui ci-dessus, nous avons html_url: "https://github.com/reactiveui/ReactiveUI/releases/5.99.0"
et un atout avec name: "ReactiveUI.6.0.Preview.1.zip"
.
comme tel, l'url de téléchargement est https://github.com/reactiveui/ReactiveUI/releases/download/5.99.0/ReactiveUI.6.0.Preview.1.zip
vous pouvez utiliser ce qui suit:
- ${Organisation} comme le GitHub de l'utilisateur ou de l'organisation
- ${dépôt} est le nom du dépôt
curl -L https://api.github.com/repos/${Organization}/${Repository}/tarball > ${Repository}.tar.gz
Le répertoire de niveau supérieur dans la .tar.fichier gz a le hachage sha de l'engagement dans le nom du répertoire qui peut être un problème si vous avez besoin d'un moyen automatisé pour changer dans le répertoire résultant et faire quelque chose.
la méthode ci-dessous va supprimer cela, et laisser les fichiers dans un dossier avec un nom prévisible.
mkdir ${Repository}
curl -L https://api.github.com/repos/${Organization}/${Repository}/tarball | tar -zxv -C ${Repository} --strip-components=1
comme je n'ai pas vu la réponse ici, mais il a été très utile pour moi tout en exécutant des tests d'intégration continue, ce un-liner qui ne nécessite que vous d'avoir curl permettra de rechercher les versions de github repo pour télécharger la dernière version
https://gist.github.com/steinwaywhw/a4cd19cda655b8249d908261a62687f8
Je l'utilise pour exécuter PHPSTan sur notre dépôt en utilisant le script suivant ""
https://gist.github.com/rvanlaak/7491f2c4f0c456a93f90e31774300b62
si vous utilisez PHP essayer de suivre le code:
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);
}
exemple D'utilisation de la fonction
echo '<a href="' .getLatestTagUrl('OzzyCzech/vestibulum') .'">Download</a>';