Benutzer-Werkzeuge

Webseiten-Werkzeuge


thoschwiki:how-to:downloadlatestreleasefromgithub

aktuelles Release ('latest') aus GitHub laden

Bei verschiedenen Anwendungsfälle ist es gewünscht, das aktuelle Release (lastest) einer Software aus dem zugehörigen Repository bei GitHub automatisiert herunterzuladen. Eine Anwendungsfall wäre ein Doeckerfile, mit dem ein Docker-Image mit dem jeweils aktuellen Release erstellt werden soll.

Der nachfolgende Code ist dem Dockerfile des Projektes 5nafu/docker-freenet entnommen und zeigt einen – recht komplexen – Weg auf:

build=$(test -n "${freenet_build}" && echo ${freenet_build} \
    || wget -qO - https://api.github.com/repos/freenet/fred/releases/latest | grep 'tag_name'| cut -d'"' -f 4) \
    && short_build=$(echo ${build}|cut -c7-) \
    && echo -e "build: $build\nurl: https://github.com/freenet/fred/releases/download/$build/new_installer_offline_$short_build.jar" >buildinfo.json \
    && echo "Building:" \
    && cat buildinfo.json
    
    wget -O /tmp/new_installer.jar $(grep url /fred/buildinfo.json |cut -d" " -f2)
  1. Beim vorliegenden Code wird zunächst geprüft, ob die Variable freenet_build gesetzt ist ($(test -n „${freenet_build}“). Nur wenn dies nicht der Fall ist, wird das Release latest aus dem Meta-Daten des Repositories abgefragt.
  2. Mit dem Aufruf von api.github.com wird eine JSON-Datei mit Meta-Daten zum Repository bzw. dem Release abgerufen.
  3. Der API-Endpoint /repos/$USER/$REPOSITORY/releases/latest liefert die Meta-Daten zu aktuellsten Release.
  4. In den Meta-Daten findet sich das Objekt tag_name vom Typ String, das den Bezeichner des aktuellen Releases enthält.
  5. Die aus den Meta-Daten und dem grundsätzlichen URL-Schema zusammengesetzte URL wird hier zunächst in die Datei buildings.json geschrieben, um sie dann per grep wieder auszulesen und für den eigentlichen Download mit wget zu verwenden.
    Dieser Schritt kann sicherlich über die Verwendung einer Variable abgekürzt werden.
thoschwiki/how-to/downloadlatestreleasefromgithub.txt · Zuletzt geändert: 20.03.2021 17:05 von thosch