tag notes mark example github tags release
https://github.com/reactiveui/ReactiveUI/releases/download/5.99.0/ReactiveUI.6.0.Preview.1.zip

notes - Descarga la última versión de GitHub



github tag release example (7)

¿Tal vez podría usar algunos scripts del lado del cliente y generar dinámicamente el objetivo del enlace invocando la api de GitHub, a través de un poco de magia JQuery?

La API de lanzamientos expone una forma de recuperar la lista de todos los lanzamientos de un repositorio . Por ejemplo, este enlace devuelve una lista con formato Json de todas las versiones del proyecto ReactiveUI .

Extraer el primero devolvería la última versión.

Dentro de esta carga útil:

  • El atributo html_url contendrá la primera parte de la url para compilar (es decir, https://github.com/{owner}/{repository}/releases/{version} ).

  • La matriz de assets mostrará una lista de los archivos descargables. Cada asset llevará un name atributo

Crear la URL de descarga de destino está a solo unas pocas operaciones de cadena de distancia.

  • Inserte la download/ palabra clave entre las releases/ segmento de html_url y el número de versión
  • Agregue el nombre del activo a descargar.

La URL resultante será del siguiente formato: https://github.com/{owner}/{repository}/releases/download/{version}/name_of_asset

Por ejemplo, con respecto a la carga útil de Json del enlace ReactiveUI enlace anterior, tenemos html_url: "https://github.com/reactiveui/ReactiveUI/releases/5.99.0" y un activo con name: "ReactiveUI.6.0.Preview.1.zip" .

Como tal, la url de descarga es https://github.com/reactiveui/ReactiveUI/releases/download/5.99.0/ReactiveUI.6.0.Preview.1.zip

Me gustaría tener el botón "Descargar la última versión" en mi sitio web que representaría el enlace a la última versión (almacenada en GitHub Releases ). Intenté crear una etiqueta de lanzamiento llamada "más reciente" , pero se complicó cuando intenté cargar una nueva versión (confusión con la fecha de creación de la etiqueta, intercambio de etiquetas, etc.). La actualización manual de los enlaces de descarga en mi sitio web también es una tarea escrupulosa y lenta. Veo la única forma: redirigir todos los botones de descarga a algún html, que a su vez redirigirá a la última versión real.

Tenga en cuenta que mi sitio web está alojado en GitHub Pages (alojamiento estático), por lo que simplemente no puedo usar scripts del lado del servidor para generar enlaces. ¿Algunas ideas?





No necesita ningún script para generar un enlace de descarga para la última versión. Simplemente use este formato:

https://github.com/:owner/:repo/zipball/:branch

Ejemplos:

https://github.com/webix-hub/tracker/zipball/master https://github.com/iDoRecall/selection-menu/zipball/gh-pages

Si por alguna razón desea obtener un enlace a la última descarga de la versión, incluido su número de versión, puede obtenerlo en la API de obtención de la última versión :

GET /repos/:owner/:repo/releases/latest

Ejemplo:

$.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>


Puedes usar lo siguiente donde:

  • $ {Organización} como usuario u organización de GitHub
  • $ {Repository} es el nombre del repositorio

curl -L https://api.github.com/repos/${Organization}/${Repository}/tarball > ${Repository}.tar.gz

El directorio de nivel superior en el archivo .tar.gz tiene el hash sha de la confirmación en el nombre del directorio, lo que puede ser un problema si necesita una forma automatizada para cambiar al directorio resultante y hacer algo.

El siguiente método lo eliminará y dejará los archivos en una carpeta con un nombre predecible.

mkdir ${Repository} curl -L https://api.github.com/repos/${Organization}/${Repository}/tarball | tar -zxv -C ${Repository} --strip-components=1


Si está usando PHP intente seguir el código:

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); }

Ejemplo de uso de funciones

echo ''<a href="'' .getLatestTagUrl(''OzzyCzech/vestibulum'') .''">Download</a>'';