with tag tab notes name create commits github
https://github.com/reactiveui/ReactiveUI/releases/download/5.99.6/ReactiveUI-5.99.6.zip

github - tag - git versioning



GitHub URL para la última versión del archivo_download_? (5)

Aquí hay una manera de hacerlo sin Github si tiene una sola descarga en el lanzamiento:

wget $(curl -s https://api.github.com/repos/USERNAME/REPONAME/releases/latest | grep ''browser_'' | cut -d/" -f4)

Es bastante fácil (aunque no es bonito) y, por supuesto, puedes cambiar wget por otra llamada curl si quieres canalizarlo a algo.

Básicamente, la llamada curl te redirecciona a una estructura JSON, y solo estoy usando utilidades de shell básicas para extraer la URL de la descarga.

Aunque esta pregunta es similar a la última versión de GitHub , en realidad es diferente: se trata de un enlace que significa "la última versión del archivo de descarga".

GitHub proporciona una "Última" URL que redirige a la página de información para la última versión. Por ejemplo: https://github.com/reactiveui/ReactiveUI/releases/latest se redireccionará a https://github.com/reactiveui/ReactiveUI/releases/tag/5.99.6 (mientras escribo esto, o a la página para una versión más nueva, algún día).

Eso es genial, pero necesito una URL para el archivo de descarga en sí . En este ejemplo, el archivo .zip asociado con el botón de descarga verde, https://github.com/reactiveui/ReactiveUI/releases/download/5.99.6/ReactiveUI-5.99.6.zip (cuando escribo esto; un archivo zip más nuevo, algún día).

¿Por qué? Quiero dar la URL para curl, como parte de una secuencia de comandos de Travis CI, para descargar la última versión.

Adiviné algunas URL como / releases / download / latest /file.zip (sustituyendo "latest" por la parte de la versión) y /releases/download/file.zip, pero esas 404.

¿Hay alguna manera de hacer esto, en el contexto de un script de shell y curl (nota: no en una página de navegador con JS)?


Como @florianb señaló, debería usar git .

Originalmente mi .travis.yml era algo así como:

before_install: - curl -L https://raw.githubusercontent.com/greghendershott/travis-racket/master/install-racket.sh | bash

Esto obtendría automáticamente cualquiera que sea la última versión, del repositorio.

Pero alguien me señaló que GitHub no quiere que la gente use raw.github.com para descargar. En cambio, la gente debería usar "lanzamientos". Así que fui un buen doctor y lo hice manualmente cada vez. Entonces mi .travis.yml era algo así como:

before_install: - curl -L https://github.com/greghendershott/travis-racket/releases/download/v0.6/install-racket.sh | bash

Pero es un PITA hacer un lanzamiento cada vez. Peor aún, todos los archivos .travis.yml deben actualizarse para apuntar a la versión más nueva del archivo.

En su lugar, solo use git para clonar el repositorio, y use el archivo dentro de él:

before_install: - git clone https://github.com/greghendershott/travis-racket.git - cat travis-racket/install-racket.sh | bash # pipe to bash not sh!


En Windows, solo usando powershell, esto funciona para mí. Probablemente se pueda escribir mucho más corto.

#Downloads latest paket.bootstrapper.exe from github $urlbase = "https://github.com" $latestPage="$urlbase/fsprojects/Paket/releases/latest" Write-Host "Parsing latest release page: $latestPage" $page=Invoke-Webrequest -uri $latestPage $latestBootStrapper=($page.Links | Where-Object { $_.href -match "bootstrapper" }).href $dlurl="$urlbase$latestBootStrapper" Write-Host "Downloading paket.bootstrapper.exe from $dlurl" $wc=new-object net.webclient $wc.UseDefaultCredentials=$true $wc.Proxy.Credentials=$wc.Credentials $wc.DownloadFile($dlurl, (join-path (resolve-path "./") "paket.bootstrapper.exe"))


Muy interesante, todavía no he notado una etiqueta de "última" en GitHub-releases. Como ahora descubrí, se regalan si está utilizando las capacidades "previas a la publicación" del sistema de lanzamiento de GitHubs. Pero no conozco ninguna forma de acceder a los binarios a través de una última ruta.

Me gustaría sugerirle que use git (que está disponible en su travis-vm) para descargar la última etiqueta.

Al igual que Julien Renault describe en su publicación de blog, podrá consultar la última etiqueta en el repositorio de esta manera:

# this step should be optional git fetch --tags latestTag=$(git describe --tags `git rev-list --tags --max-count=1`) git checkout $latestTag

Esta solución se basa en la suposición de que la última etiqueta es también la última versión.


Utilizo esto para obtener las URL de descarga en PowerShell 5+ (reemplace ACCOUNT & REPO)

Invoke-RestMethod -uri https://api.github.com/repos/ACCOUNT/REPO/releases/latest | select -ExpandProperty assets | select -expand browser_download_url

Tenga en cuenta que si tienen más de un paquete, esta será una lista. Si desea elegir uno, busque una parte única del nombre, es decir, gane para Windows y use: (reemplace CUENTA, REPO Y SELECTOR)

Invoke-RestMethod -uri https://api.github.com/repos/ACCOUNT/REPO/releases/latest | select -ExpandProperty assets | ? { $_.name.Contains("SELECTOR")} | select -expand browser_download_url

Como bonificación, si asigna lo anterior a una variable, puede tomar el archivo y extraerlo con lo siguiente (suponiendo que asigne $ uri):

Invoke-WebRequest $uri -OutFile "release.zip" Expand-Archive ./release.zip

En PowerShell 6+ esto debería funcionar en otras plataformas aparte de Windows.