En utilisant la fonction Release de GitHub , il est possible de fournir un lien pour télécharger une version spécifique du logiciel publié. Cependant, chaque fois qu'une version est faite, la page gh doit également être mise à jour.
Existe-t-il un moyen d'obtenir un lien vers un fichier spécifique de la dernière version d'un logiciel?
par exemple, ce serait un lien statique:
https://github.com/USER/PROJECT/releases/download/v0.0.0/package.zip
Ce que je voudrais, c'est quelque chose comme:
https://github.com/USER/PROJECT/releases/download/latest/package.zip
REMARQUE: la différence entre cette question et la dernière version de GitHub est que cette question demande spécifiquement l'accès au fichier, pas la dernière page de version de GitHub
github
download
release
github-pages
Christian Rondeau
la source
la source
Réponses:
Quelques années de retard, mais je viens de mettre en place une simple redirection vers le support
https://github.com/USER/PROJECT/releases/latest/download/package.zip
. Cela devrait redirigés vers la dernière taggedpackage.zip
actif communiqué. J'espère que c'est pratique!la source
.../releases/latest/download/...
inversé.../releases/download/v0.0.0/...
. Vous ne pouvez pas simplement remplacerv0.0.0
parlatest
en place.Solution Linux pour obtenir le lien de téléchargement de la dernière version des actifs (fonctionne uniquement si la version ne contient qu'un seul élément)
la source
curl -s https://api.github.com/repos/atom/atom/releases | grep browser_download_url | grep '64[.]deb' | head -n 1 | cut -d '"' -f 4
curl -s https://api.github.com/repos/git-ftp/git-ftp/releases | grep tarball_url | head -n 1 | cut -d '"' -f 4
| head -n 1
api.github.com/repos/boxbilling/boxbilling/releases/latestVous pouvez faire une requête ajax pour obtenir l'URL de téléchargement de la dernière version à l'aide de l' API des versions de GitHub . Il montre également quand il a été publié et le nombre de téléchargements:
Il est important que vous définissiez l'URL du bouton par défaut sur la page des versions (comme https://github.com/ShareX/ShareX/releases/latest ), donc si le navigateur ne prend pas en charge ajax (ou javascript) ou est trop lent à obtenir l'URL, le bouton de téléchargement fonctionnera toujours.
Lorsque la requête Ajax se termine, l'URL de ce bouton se transforme automatiquement en une URL de téléchargement direct.
Éditer:
J'ai également créé une page de téléchargements qui montre plusieurs versions que vous pouvez trouver ici: https://getsharex.com/downloads/
Code source de celui-ci: https://github.com/ShareX/sharex.github.io/blob/master/js/downloads.js
la source
curl -s https://api.github.com/repos/DataTables/DataTables/releases/latest
Depuis la ligne de commande en utilisant
curl
etjq
, récupère le premier fichier de la dernière version:la source
jq --raw-output
est un moyen plus propre de supprimer les citations. Si vous ne voulez que le dernier, il est moins cher de récupérer.../releases/latest
et de déposer le fichier.[0] |
. Mais récupérer toutes les versions permet des requêtes commejq '.[] | .assets[] | .browser_download_url | select(endswith(".deb"))'
...curl --silent "https://api.github.com/repos/docker/compose/releases/latest" | jq --arg PLATFORM_ARCH "$(echo `uname -s`-`uname -m`)" -r '.assets[] | select(.name | endswith($PLATFORM_ARCH)).browser_download_url' | xargs sudo curl -L -o /usr/local/bin/docker-compose --url
. Le endswith était la magie et l'utilisation de l'arc me permet d'ignorer les fichiers what.sha256 qui sont généralement présents sans faire|head -n 1
.Une autre solution Linux utilisant curl et wget pour télécharger un seul fichier binaire à partir de la dernière page de version
Explication:
curl -s -L
consiste à télécharger silencieusement la dernière version HTML (après la redirection suivante)egrep -o '...'
utilise regex pour trouver le fichier souhaitéwget --base=http://github.com/ -i -
convertit le chemin relatif du pipeline en URL absolueet
-O scollector
définit le nom de fichier souhaité.peut être en mesure d'ajouter
-N
au téléchargement uniquement si le fichier est plus récent mais que S3 donnait une erreur 403 Forbidden.la source
\.
par exemple 2.2.0 nécessaires/download/[0-9\.]*/
v
comme préfixe, comme une étiquettev0.11.0
. Entrez simplementcurl -s -L https://github.com/bosun-monitor/bosun/releases/latest | egrep -o '/bosun-monitor/bosun/releases/download/[v]?[0-9.]*/scollector-linux-armv6' | wget --base=http://github.com/ -i - -O scollector
dans votre CLI et cela fonctionne parfaitement. Merci Greg !!Comme indiqué précédemment, jq est utile pour cela et d'autres API REST .
tl; dr - plus de détails ci-dessous
En supposant que vous vouliez la version macOS :
Solution pour les versions atomiques
Notez que chaque dépôt peut avoir différentes manières de fournir l'artefact souhaité, donc je vais démontrer pour un bon comportement comme atom .
Obtenez les noms des actifs publiés
Obtenez l'URL de téléchargement de l'élément souhaité
Ci - dessous atom-mac est mon atout souhaité via jq
select(.name=="atom-mac.zip")
Téléchargez l'artefact
jq Playground
La syntaxe jq peut être difficile. Voici un terrain de jeu pour expérimenter ce qui
jq
précède: https://jqplay.org/s/h6_LfoEHLZSécurité
Vous devez prendre des mesures pour garantir la validité de l'artefact téléchargé via sha256sum et gpg , si possible.
la source
Une solution utilisant (un wget interne) pour obtenir le contenu HTML, filtrez-le pour le fichier zip (avec egrep) puis téléchargez le fichier zip (avec le wget externe).
la source
Utilisez simplement l'une des URL ci-dessous pour télécharger la dernière version: (a pris les URL du projet boxbilling par exemple): https://api.github.com/repos/boxbilling/boxbilling/releases
Téléchargez la dernière version en zip: https://api.github.com/repos/boxbilling/boxbilling/zipball
Téléchargez la dernière version en tarball: https://api.github.com/repos/boxbilling/boxbilling/tarball
Cliquez sur l'une des URL pour télécharger instantanément la dernière version. Au moment où j'ai écrit ces lignes, c'est actuellement: boxbilling-boxbilling-4.20-30-g452ad1c [.zip / .tar.gz]
MISE À JOUR: J'ai trouvé une autre URL dans mes fichiers journaux (réf. À l'exemple ci-dessus) https://codeload.github.com/boxbilling/boxbilling/legacy.tar.gz/master
la source
Pas possible selon le support GitHub à partir du 23/05/2018
Contacté [email protected] le 23/05/2018 avec le message:
et ils ont répondu:
Je continuerai également à suivre cela sur: https://github.com/isaacs/github/issues/658
Solution Python sans aucune dépendance
Robuste et portable:
Voir également:
Pensez également aux pré-versions
/latest
ne voit pas les pré-versions, mais c'est facile à faire car/releases
montre la dernière en premier:la source
La page d'aide Liens vers les versions mentionne un bouton "Dernière version", mais cela ne vous donne pas de lien de téléchargement.
https://github.com/reactiveui/ReactiveUI/releases/latest
Pour cela, vous devez d'abord obtenir la dernière balise (comme mentionné dans " URL GitHub pour la dernière version du fichier à télécharger ? "):
la source
gh-pages
branche chaque fois qu'une nouvelle version est faite; l'objectif est d'avoir un lien statique que je puisse utiliser pour simplement "faire référence à la dernière version". Pour le moment, ma meilleure option est de simplement consulter la page des versions.en PHP - redirigez vers la dernière version de téléchargement. Mettez simplement sur votre espace web
la source
Si vous voulez utiliser juste,
curl
vous pouvez essayer avec-w '%{url_effective}'
qui imprime l'URL après une chaîne de redirection (suivie de curl si vous l'invoquez avec-L
). Donc, par exemplesorties
https://github.com/github-tools/github/releases/tag/v3.1.0
.la source
Github prend désormais en charge les liens statiques pour télécharger des fichiers individuels à partir de la dernière version: https://help.github.com/en/articles/linking-to-releases
la source
Comme la plupart des visiteurs de cette question, j'étais absolument frustré de trouver un moyen d'automatiser entièrement le téléchargement de la DERNIÈRE version versionnée ou d'un repo dans Github. L'avantage de cette solution est que vous n'avez pas besoin de spécifier de numéro de version ou de tag, il récupérera simplement le DERNIER .
J'ai effectué mes tests en utilisant l'utilisateur et le référentiel Github suivants:
" f1linux " = Utilisateur Github
" pi-ap " = Repo
Le nom de répertoire arbitraire dans lequel le dépôt est enregistré est défini dans:
DIRECT:
En utilisant les outils " Développeur Web " de Firefox (3 barres dans le coin supérieur droit), dans la section " Réseau ", j'ai trouvé que je
https://api.github.com
redirigeait vershttps://codeload.github.com
, donc en acheminant lecurl
vers,tar
j'ai pu récupérer le dernier repo versionné et l'enregistrer sous un nom prévisible. il pourrait être opéré sur:INDIRECT:
Après avoir réalisé des téléchargements entièrement automatisés de la dernière version versionnée à l'aide d'une URL DIRECTE , j'ai concentré mon attention sur la même chose avec la redirection de Github:
Méthode préférée:
Cependant, veuillez noter que selon le commentaire de Von ci-dessous, INDIRECT est la méthode préférée
Validation supplémentaire:
Pour m'assurer que mes résultats étaient reproductibles avec d'autres dépôts Github versionnés, les mêmes tests ont été exécutés avec succès pour la
doctl
boîte à outils api de Digital Ocean (ce qui a en fait commencé tout l'exercice!):Les deux DIRECT et INDIRECT travail en utilisant la même forme que ci - dessus, juste changer le nom d' utilisateur et repo:
DIRECT:
INDIRECT:
la source
Je souhaite télécharger les versions du
README.md
fichier dans la description du référentiel. Là, je ne peux pas exécuter JavaScript.Je peux ajouter des liens comme ceux-ci au fichier README ou aux pages github pour tous mes référentiels:
https://niccokunzmann.github.io/download_latest/<USER>/<REPOSITORY>/<FILE>
Télécharge le dernier fichier de version à partir du référentiel.
https://niccokunzmann.github.io/download_latest/<FILE>
Cela fonctionne car le référent JavaScript est défini et le référentiel à télécharger est déterminé
document.referrer
. Ainsi, le lien fonctionnera également pour les fourches.Vous pouvez trouver le code source ici , fork ou simplement utiliser mon repo.
la source
Dans le cas où le dépôt n'utilise que des balises au lieu de release - cf. jQuery - les solutions basées sur une URL ne fonctionnent pas.
Au lieu de cela, vous devez interroger toutes les balises, les trier et construire l'URL de téléchargement. J'ai implémenté une telle solution pour le langage Go et le repo jQuery: Link to Github .
Peut-être que cela aide quelqu'un.
la source