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. Cadaasset
llevará unname
atributo
Crear la URL de descarga de destino está a solo unas pocas operaciones de cadena de distancia.
- Inserte la
download/
palabra clave entre lasreleases/
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?
Como no vi la respuesta aquí, pero fue bastante útil para mí al ejecutar pruebas de integración continua, esta línea de una línea que solo requiere que tengas rizos te permitirá buscar los lanzamientos del repo de Github para descargar la última versión.
https://gist.github.com/steinwaywhw/a4cd19cda655b8249d908261a62687f8
Lo uso para ejecutar PHPSTan en nuestro repositorio usando el siguiente script
https://gist.github.com/rvanlaak/7491f2c4f0c456a93f90e31774300b62
Desde el 18 de febrero de 2015 , la API de lanzamiento de GitHUb V3 tiene una API de liberación más reciente .
GET /repos/:owner/:repo/releases/latest
Github ahora proporciona un botón "Último lanzamiento" en la página de lanzamiento de un proyecto, después de haber creado su primer lanzamiento .
En el ejemplo que dio, este botón se vincula a https://github.com/reactiveui/ReactiveUI/releases/latest
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>'';