Con la función de lanzamiento de GitHub , es posible proporcionar un enlace para descargar una versión específica del software publicado. Sin embargo, cada vez que se realiza un lanzamiento, la página gh también debe actualizarse.
¿Hay alguna manera de obtener un enlace a un archivo específico de la versión más reciente de un software?
por ejemplo, este sería un enlace estático:
https://github.com/USER/PROJECT/releases/download/v0.0.0/package.zip
Lo que me gustaría es algo como:
https://github.com/USER/PROJECT/releases/download/latest/package.zip
NOTA: La diferencia entre esta pregunta y la última versión de GitHub es que esta pregunta específicamente pide obtener acceso al archivo, no a la página de la última versión de GitHub
github
download
release
github-pages
Christian Rondeau
fuente
fuente
Respuestas:
Unos años tarde, pero acabo de implementar una simple redirección al soporte
https://github.com/USER/PROJECT/releases/latest/download/package.zip
. Eso debería redirigirse al últimopackage.zip
recurso de lanzamiento etiquetado . Espero que sea útil!fuente
.../releases/latest/download/...
vs.../releases/download/v0.0.0/...
. No puede simplemente reemplazarv0.0.0
conlatest
en su lugar.Solución de Linux para obtener el enlace de descarga de activos de la última versión (solo funciona si la versión tiene un solo activo)
fuente
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/latestPuede hacer una solicitud ajax para obtener la última URL de descarga de versión utilizando la API de versiones de GitHub . También muestra cuándo se lanzó y el recuento de descargas:
Es importante que establezca la URL del botón predeterminado en la página de lanzamientos (como https://github.com/ShareX/ShareX/releases/latest ), de modo que si el navegador no admite ajax (o javascript) o es demasiado lento para obtener la URL, el botón de descarga seguirá funcionando.
Cuando se completa la solicitud de Ajax, la URL de este botón cambiará automáticamente a una URL de descarga directa.
Editar:
También hice una página de descargas que muestra varios lanzamientos que puedes encontrar aquí: https://getsharex.com/downloads/
Código fuente: https://github.com/ShareX/sharex.github.io/blob/master/js/downloads.js
fuente
curl -s https://api.github.com/repos/DataTables/DataTables/releases/latest
Desde la línea de comando usando
curl
yjq
, recupera el primer archivo de la última versión:fuente
jq --raw-output
es una forma más limpia de descartar las comillas. Si solo quieres lo último, es más barato buscarlo.../releases/latest
y soltarlo.[0] |
. Pero obtener todos los lanzamientos permite consultas comojq '.[] | .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
. El final fue la magia y usar el arco me permite ignorar los archivos whatever.sha256 que normalmente están presentes sin hacer|head -n 1
.Otra solución de Linux que utiliza curl y wget para descargar un solo archivo binario desde la última página de lanzamiento
Explicación:
curl -s -L
es descargar silenciosamente la última versión HTML (después de seguir la redirección)egrep -o '...'
usa expresiones regulares para encontrar el archivo que deseaswget --base=http://github.com/ -i -
convierte la ruta relativa de la canalización a URL absolutay
-O scollector
establece el nombre del archivo deseado.puede agregarse
-N
a solo descargar si el archivo es más nuevo pero S3 estaba dando un error prohibido 403.fuente
\.
por ejemplo, 2.2.0 necesario/download/[0-9\.]*/
v
como prefijo, como una etiquetav0.11.0
. Simplemente ingresecurl -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
su CLI y funciona perfectamente. ¡Gracias Greg!Como se señaló anteriormente, jq es útil para esta y otras API REST .
tl; dr - más detalles a continuación
Suponiendo que desea la versión de macOS :
Solución para liberaciones de átomos
Tenga en cuenta que cada repositorio puede tener diferentes formas de proporcionar el artefacto deseado, por lo que demostraré un átomo de buen comportamiento .
Obtener los nombres de los activos publicados.
Obtenga la URL de descarga para el activo deseado
Debajo de atom-mac está mi activo deseado a través de jq's
select(.name=="atom-mac.zip")
Descargar el artefacto
jq Playground
La sintaxis jq puede ser difícil. Aquí hay un patio de recreo para experimentar con lo
jq
anterior: https://jqplay.org/s/h6_LfoEHLZSeguridad
Debe tomar medidas para garantizar la validez del artefacto descargado mediante sha256sum y gpg , si es posible.
fuente
Una solución que utiliza wget (interno) para obtener el contenido HTML, filtre el archivo zip (con egrep) y luego descargue el archivo zip (con el wget externo).
fuente
Solo use una de las siguientes URL para descargar la última versión: (tomó las URL del proyecto de boxbilling, por ejemplo): https://api.github.com/repos/boxbilling/boxbilling/releases
Descargue la última versión como zip: https://api.github.com/repos/boxbilling/boxbilling/zipball
Descargue la última versión como tarball: https://api.github.com/repos/boxbilling/boxbilling/tarball
Haga clic en una de las URL para descargar la última versión al instante. Mientras escribía estas líneas, actualmente es: boxbilling-boxbilling-4.20-30-g452ad1c [.zip / .tar.gz]
ACTUALIZACIÓN: Encontré otra URL en mis archivos de registro (ref. Al ejemplo anterior) https://codeload.github.com/boxbilling/boxbilling/legacy.tar.gz/master
fuente
No es posible según el soporte de GitHub a partir del 23/05/2018
Contactado [email protected] el 23/05/2018 con el mensaje:
y ellos respondieron:
También seguiré rastreando esto en: https://github.com/isaacs/github/issues/658
Solución Python sin dependencias.
Robusto y portátil:
Ver también:
Considere también las versiones preliminares
/latest
no ve prelanzamientos, pero es fácil de hacer ya que/releases
muestra primero el último:fuente
La página de ayuda Vinculación a versiones menciona un botón de "Última versión", pero eso no le proporciona un enlace de descarga.
https://github.com/reactiveui/ReactiveUI/releases/latest
Para eso, primero debe obtener la última etiqueta (como se menciona en "¿ URL de GitHub para la última versión del archivo de descarga ? "):
fuente
gh-pages
rama cada vez que se realiza una nueva versión; el objetivo es tener un enlace estático que pueda usar para "referirme a la última versión". En este momento, mi mejor opción es referirme a la página de lanzamientos.en PHP: redirige a la descarga de la última versión. Simplemente colóquelo en su espacio web
fuente
Si desea usar solo
curl
puede probar con-w '%{url_effective}'
eso imprime la URL después de una cadena de redireccionamiento (seguido de curl si lo invoca-L
). Así por ejemplosalidas
https://github.com/github-tools/github/releases/tag/v3.1.0
.fuente
Github ahora admite enlaces estáticos para descargar archivos individuales de la última versión: https://help.github.com/en/articles/linking-to-releases
fuente
Como la mayoría de los visitantes de esta pregunta, me sentí absolutamente frustrado al encontrar una manera de automatizar completamente la descarga de la ÚLTIMA versión versionada o un repositorio en Github. El beneficio de esta solución es que no tiene que especificar ningún número de versión o etiqueta, solo tomará el ÚLTIMO .
Realicé mis pruebas usando el siguiente usuario y repositorio de Github:
" f1linux " = Usuario de Github
" pi-ap " = Repo
El nombre de directorio arbitrario en el que se guarda el repositorio se establece en:
DIRECTO:
El uso de Firefox " Web Developer herramientas" (3 bares en la esquina superior derecha), en la " Red de la sección" I Found
https://api.github.com
estaba a redirigir ahttps://codeload.github.com
, por lo que mediante la canalización de lacurl
quetar
yo era capaz de agarrar la última cesión temporal versionado y guardarlo en un nombre predecible por lo podría ser operado en:INDIRECTO:
Después de lograr descargas totalmente automatizadas de la última versión versionada usando una URL DIRECTA , volví mi atención a lograr lo mismo con la redirección de Github:
Metodo preferido:
Sin embargo, tenga en cuenta según el comentario de Von a continuación que INDIRECTO es el método preferido
Validación adicional:
Para garantizar que mis resultados fueran reproducibles en otros repositorios de Github versionados, se ejecutaron con éxito las mismas pruebas para el
doctl
kit de herramientas api de Digital Ocean (que es lo que comenzó todo el ejercicio en realidad):Tanto DIRECTO y INDIRECTA funcionan con el mismo formulario que el anterior, solo cambiando el nombre de usuario y el repositorio:
DIRECTO:
INDIRECTO:
fuente
Quiero descargar las versiones del
README.md
archivo en la descripción del repositorio. Allí, no puedo ejecutar JavaScript.Puedo agregar enlaces como estos al archivo README o páginas github para todos mis repositorios:
https://niccokunzmann.github.io/download_latest/<USER>/<REPOSITORY>/<FILE>
Descarga el archivo de la última versión del repositorio.
https://niccokunzmann.github.io/download_latest/<FILE>
Esto funciona porque el referente de JavaScript está configurado y el repositorio para descargar se determina a través
document.referrer
. Por lo tanto, el enlace también funcionará para horquillas.Puede encontrar el código fuente aquí , bifurcar o simplemente usar mi repositorio.
fuente
En caso de que el repositorio use solo etiquetas en lugar de lanzamiento, cf. jQuery: las soluciones basadas en una URL no funcionan.
En su lugar, debe consultar todas las etiquetas, ordenarlas y construir la URL de descarga. Implementé una solución para el lenguaje Go y el repositorio jQuery: Link to Github .
Quizás, esto ayude a alguien.
fuente