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)
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.api.github.com
wird eine JSON-Datei mit Meta-Daten zum Repository bzw. dem Release abgerufen./repos/$USER/$REPOSITORY/releases/latest
liefert die Meta-Daten zu aktuellsten Release.tag_name
vom Typ String, das den Bezeichner des aktuellen Releases enthält.buildings.json
geschrieben, um sie dann per grep
wieder auszulesen und für den eigentlichen Download mit wget
zu verwenden.