Mit der Release-Funktion von GitHub können Sie einen Link zum Herunterladen einer bestimmten Version der veröffentlichten Software bereitstellen. Jedes Mal, wenn eine Veröffentlichung erfolgt, muss die Gh-Seite jedoch ebenfalls aktualisiert werden.
Gibt es eine Möglichkeit, einen Link zu einer bestimmten Datei der neuesten Version einer Software zu erhalten?
Dies wäre beispielsweise eine statische Verknüpfung:
https://github.com/USER/PROJECT/releases/download/v0.0.0/package.zip
Was ich möchte, ist so etwas wie:
https://github.com/USER/PROJECT/releases/download/latest/package.zip
HINWEIS: Der Unterschied zwischen dieser Frage und der neuesten Version von GitHub besteht darin, dass in dieser Frage speziell nach dem Zugriff auf die Datei gefragt wird, nicht auf die Seite mit der neuesten Version von GitHub
quelle
Antworten:
Ein paar Jahre zu spät, aber ich habe gerade eine einfache Weiterleitung implementiert, um zu unterstützen
https://github.com/USER/PROJECT/releases/latest/download/package.zip
. Das sollte auf das neueste getaggtepackage.zip
Release-Asset umgeleitet werden . Hoffe es ist praktisch!quelle
.../releases/latest/download/...
gegen geschaltet wird.../releases/download/v0.0.0/...
. Sie können nicht einfach ersetzenv0.0.0
mitlatest
an seinem Platz.Linux-Lösung zum Abrufen des neuesten Links zum Herunterladen von Assets (funktioniert nur, wenn das Release nur ein Asset enthält)
quelle
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/latestSie können eine Ajax- Anfrage stellen, um die Download-URL der neuesten Version mithilfe der GitHub Releases-API abzurufen . Es zeigt auch, wann es veröffentlicht wurde und die Anzahl der Downloads:
Es ist wichtig, dass Sie die Standard-Schaltflächen-URL für die Release-Seite festlegen (z. B. https://github.com/ShareX/ShareX/releases/latest ), wenn der Browser Ajax (oder Javascript) nicht unterstützt oder zu langsam ist Wenn Sie die URL abrufen, funktioniert der Download-Button weiterhin.
Wenn die Ajax-Anforderung abgeschlossen ist, ändert sich die URL dieser Schaltfläche automatisch in eine direkte Download-URL.
Bearbeiten:
Ich habe auch eine Download-Seite erstellt, die mehrere Releases zeigt, die Sie hier finden: https://getsharex.com/downloads/
Quellcode davon: https://github.com/ShareX/sharex.github.io/blob/master/js/downloads.js
quelle
curl -s https://api.github.com/repos/DataTables/DataTables/releases/latest
Ruft über
curl
und über die Befehlszeilejq
die erste Datei der neuesten Version ab:quelle
jq --raw-output
ist eine sauberere Möglichkeit, die Anführungszeichen zu löschen. Wenn Sie nur das Neueste wollen, ist es billiger, das zu holen.../releases/latest
und fallen zu lassen.[0] |
. Das Abrufen aller Veröffentlichungen ermöglicht jedoch Abfragen wiejq '.[] | .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
. Das Ende war die Magie und die Verwendung des Bogens ermöglicht es mir, die Whatever.sha256-Dateien zu ignorieren, die normalerweise vorhanden sind, ohne dies zu tun|head -n 1
.Eine andere Linux-Lösung, die curl und wget verwendet, um eine einzelne Binärdatei von der neuesten Release-Seite herunterzuladen
Erläuterung:
curl -s -L
ist das stille Herunterladen der neuesten HTML-Version (nach der folgenden Weiterleitung)egrep -o '...'
verwendet Regex, um die gewünschte Datei zu findenwget --base=http://github.com/ -i -
konvertiert den relativen Pfad von der Pipeline in eine absolute URLund
-O scollector
legt den gewünschten Dateinamen fest.Möglicherweise kann
-N
nur zum Download hinzugefügt werden , wenn die Datei neuer ist, S3 jedoch einen 403 Forbidden-Fehler ausgegeben hat.quelle
\.
zB 2.2.0/download/[0-9\.]*/
v
als Präfix annehmen, wie ein Tagv0.11.0
.curl -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
Geben Sie einfach Ihre CLI ein und es funktioniert perfekt. Danke, Greg !!Wie bereits erwähnt, ist jq für diese und andere REST-APIs nützlich .
tl; dr - weitere Details unten
Angenommen, Sie möchten die MacOS- Version:
Lösung für Atomfreisetzungen
Beachten Sie jede Repo verschiedene Möglichkeiten , um die gewünschte Artefakt haben kann, so dass ich für eine demonstrieren artig ein wie Atom .
Holen Sie sich die Namen der veröffentlichten Assets
Rufen Sie die Download-URL für das gewünschte Asset ab
Unter Atom-Mac befindet sich mein gewünschtes Asset über JQs
select(.name=="atom-mac.zip")
Laden Sie das Artefakt herunter
jq Spielplatz
Die jq-Syntax kann schwierig sein. Hier ist ein Spielplatz zum Experimentieren mit den
jq
oben genannten: https://jqplay.org/s/h6_LfoEHLZSicherheit
Sie sollten Maßnahmen ergreifen, um die Gültigkeit des heruntergeladenen Artefakts über sha256sum und gpg sicherzustellen , wenn dies überhaupt möglich ist.
quelle
Eine Lösung, die (ein inneres) Wget verwendet, um den HTML-Inhalt abzurufen, nach der Zip-Datei (mit egrep) zu filtern und dann die Zip-Datei (mit dem äußeren Wget) herunterzuladen.
quelle
Verwenden Sie einfach eine der folgenden URLs, um die neueste Version herunterzuladen: (z. B. URLs aus dem Boxbilling-Projekt): https://api.github.com/repos/boxbilling/boxbilling/releases
Laden Sie die neueste Version als Zip herunter: https://api.github.com/repos/boxbilling/boxbilling/zipball
Laden Sie die neueste Version als Tarball herunter: https://api.github.com/repos/boxbilling/boxbilling/tarball
Klicken Sie auf eine der URLs, um die neueste Version sofort herunterzuladen. Während ich diese Zeilen schrieb, ist es derzeit: boxbilling-boxbilling-4.20-30-g452ad1c [.zip / .tar.gz]
UPDATE: Ich habe eine andere URL in meinen Protokolldateien gefunden (siehe Beispiel oben) https://codeload.github.com/boxbilling/boxbilling/legacy.tar.gz/master
quelle
Laut GitHub-Support vom 23.05.2018 nicht möglich
Kontaktierte [email protected] am 23.05.2018 mit der Nachricht:
und sie antworteten:
Ich werde dies auch weiterhin verfolgen unter: https://github.com/isaacs/github/issues/658
Python-Lösung ohne Abhängigkeiten
Robust und tragbar:
Siehe auch:
Berücksichtigen Sie auch Vorabversionen
/latest
Es werden keine Vorabversionen angezeigt, dies ist jedoch einfach, da zuerst/releases
die neueste Version angezeigt wird:quelle
Auf der Hilfeseite " Verknüpfen mit Releases " wird zwar die Schaltfläche "Neueste Release" erwähnt, Sie erhalten jedoch keinen Download-Link.
https://github.com/reactiveui/ReactiveUI/releases/latest
Dazu müssen Sie zuerst das neueste Tag abrufen (wie unter " GitHub-URL für die neueste Version der Download-Datei ? " Erwähnt ):
quelle
gh-pages
jedes Mal, wenn eine neue Version erstellt wird , eine neue Version des Zweigs gepusht wird. Das Ziel ist ein statischer Link, über den ich nur "auf die neueste Version verweisen" kann. Im Moment ist es meine beste Option, einfach auf die Release-Seite zu verweisen.in PHP - Weiterleitung zum neuesten Release-Download. Legen Sie einfach Ihren Webspace an
quelle
Wenn Sie nur verwenden möchten,
curl
können Sie versuchen-w '%{url_effective}'
, die URL nach einer Umleitungskette zu drucken (gefolgt von Curl, wenn Sie sie mit aufrufen-L
). So zum BeispielAusgänge
https://github.com/github-tools/github/releases/tag/v3.1.0
.quelle
Github unterstützt jetzt statische Links zum Herunterladen einzelner Dateien aus der neuesten Version: https://help.github.com/de/articles/linking-to-releases
quelle
Wie die meisten, die diese Frage besuchten, war ich absolut frustriert, einen Weg zu finden, den Download der neuesten Version oder eines Repos in Github vollständig zu automatisieren . Der Vorteil dieser Lösung besteht darin, dass Sie keine Versions- oder Tag-Nummer angeben müssen - sie wird nur die NEUESTE erhalten .
Ich habe meine Tests mit dem folgenden Github-Benutzer & Repo durchgeführt:
" f1linux " = Github-Benutzer
" pi-ap " = Repo
Der beliebige Verzeichnisname, in dem das Repo gespeichert wird, wird wie folgt festgelegt:
DIREKTE:
Mit den " Web Developer " -Tools von Firefox (3 Balken in der oberen rechten Ecke) wurde im Abschnitt " Netzwerk ", zu dem ich gefunden habe,
https://api.github.com
umgeleitet. Durch Weiterleitenhttps://codeload.github.com
descurl
an konntetar
ich das neueste versionierte Repo abrufen und es unter einem vorhersehbaren Namen speichern es könnte betrieben werden auf:INDIREKT:
Nachdem ich mithilfe einer DIRECT- URL vollautomatische Downloads der neuesten Version erhalten hatte , konzentrierte ich mich darauf, dasselbe mit Githubs Umleitung zu erreichen:
Bevorzugte Methode:
Bitte beachten Sie jedoch gemäß dem Kommentar von Von, dass INDIREKT die bevorzugte Methode ist
Weitere Validierung:
Um sicherzustellen, dass meine Ergebnisse mit anderen versionierten Github-Repos reproduzierbar sind, wurden dieselben Tests erfolgreich für das
doctl
API-Toolkit von Digital Ocean durchgeführt (mit dem die gesamte Übung tatsächlich begonnen hat!):Beide DIREKT als auch INDIRECT arbeiten mit derselben Form wie oben und ändern lediglich den Benutzernamen und das Repo:
DIREKTE:
INDIREKT:
quelle
Ich möchte die Releases aus der
README.md
Datei in der Repository-Beschreibung herunterladen . Dort kann ich kein JavaScript ausführen.Ich kann der README-Datei oder den Github-Seiten für alle meine Repositorys solche Links hinzufügen:
https://niccokunzmann.github.io/download_latest/<USER>/<REPOSITORY>/<FILE>
Lädt die neueste Release-Datei aus dem Repository herunter.
https://niccokunzmann.github.io/download_latest/<FILE>
Dies funktioniert, weil der JavaScript-Referrer festgelegt ist und das herunterzuladende Repository über festgelegt wird
document.referrer
. Somit funktioniert der Link auch für Gabeln.Sie finden den Quellcode hier , gabeln oder verwenden Sie einfach mein Repo.
quelle
Für den Fall, dass das Repo nur Tags anstelle von Release verwendet - vgl. jQuery - Die Lösungen, die auf einer URL basieren, funktionieren nicht.
Stattdessen müssen Sie alle Tags abfragen, sortieren und die Download-URL erstellen. Ich habe eine solche Lösung für die Sprache Go und das jQuery-Repo implementiert: Link to Github .
Vielleicht hilft das jemandem.
quelle