Usando o recurso Release do GitHub , é possível fornecer um link para baixar uma versão específica do software publicado. No entanto, toda vez que um lançamento é feito, a página gh também precisa ser atualizada.
Existe uma maneira de obter um link para um arquivo específico, independentemente da versão mais recente de um software?
por exemplo, este seria um link estático:
https://github.com/USER/PROJECT/releases/download/v0.0.0/package.zip
O que eu gostaria é algo como:
https://github.com/USER/PROJECT/releases/download/latest/package.zip
NOTA: A diferença entre esta pergunta e a versão mais recente do GitHub é que esta pergunta solicita especificamente o acesso ao arquivo, não a página de versão mais recente do GitHub
github
download
release
github-pages
Christian Rondeau
fonte
fonte
Respostas:
Alguns anos atrasado, mas acabei de implementar um redirecionamento simples para dar suporte
https://github.com/USER/PROJECT/releases/latest/download/package.zip
. Isso deve ser redirecionado para o últimopackage.zip
recurso de liberação marcado . Espero que seja útil!fonte
.../releases/latest/download/...
vs.../releases/download/v0.0.0/...
. Você não pode simplesmente substituirv0.0.0
porlatest
no lugar.Solução Linux para obter o link de download de ativos da versão mais recente (funciona apenas se a release tiver apenas um ativo)
fonte
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/latestVocê pode fazer uma solicitação ajax para obter o URL de download da versão mais recente usando a API de versões do GitHub . Também mostra quando foi lançado e a contagem de downloads:
É importante definir o URL do botão padrão para a página de lançamentos (como https://github.com/ShareX/ShareX/releases/latest ), portanto, se o navegador não suportar ajax (ou javascript) ou se for muito lento para obter o URL, o botão de download ainda funcionará.
Quando a solicitação do Ajax for concluída, o URL deste botão mudará automaticamente para um URL de download direto.
Editar:
Também fiz uma página de downloads que mostra vários lançamentos que você pode encontrar aqui: https://getsharex.com/downloads/
Código-fonte: https://github.com/ShareX/sharex.github.io/blob/master/js/downloads.js
fonte
curl -s https://api.github.com/repos/DataTables/DataTables/releases/latest
Na linha de comando, usando
curl
ejq
, recupera o primeiro arquivo da versão mais recente :fonte
jq --raw-output
é uma maneira mais limpa de descartar as aspas. Se você quer apenas o mais recente, é mais barato buscar.../releases/latest
e largar o.[0] |
. Mas buscar todos os lançamentos permite consultas gostajq '.[] | .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
,. O final foi a mágica e o uso do arco me permite ignorar os arquivos what.sha256 que normalmente estão presentes sem fazer|head -n 1
.Outra solução Linux usando curl e wget para baixar um único arquivo binário da página de lançamento mais recente
Explicação:
curl -s -L
é baixar silenciosamente o HTML mais recente da versão (após o redirecionamento a seguir)egrep -o '...'
usa regex para encontrar o arquivo que você desejawget --base=http://github.com/ -i -
converte o caminho relativo do pipeline em URL absolutoe
-O scollector
define o nome do arquivo desejado.poderá adicionar
-N
ao download apenas se o arquivo for mais recente, mas o S3 estava apresentando um erro 403 Proibido.fonte
\.
por exemplo 2.2.0 necessário/download/[0-9\.]*/
v
como prefixo, como um tagv0.11.0
. Basta inserircurl -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
sua CLI e ela funciona perfeitamente. Obrigado Greg !!Como observado anteriormente, jq é útil para esta e outras APIs REST .
tl; dr - mais detalhes abaixo
Supondo que você queira a versão macOS :
Solução para liberações de átomos
Observe que cada repositório pode ter maneiras diferentes de fornecer o artefato desejado, portanto, demonstrarei um átomo bem comportado .
Obtenha os nomes dos ativos publicados
Obtenha o URL de download para o ativo desejado
Abaixo atom-mac é o meu ativo desejado via jq's
select(.name=="atom-mac.zip")
Faça o download do artefato
jq Playground
A sintaxe jq pode ser difícil. Aqui está um playground para experimentar o
jq
acima: https://jqplay.org/s/h6_LfoEHLZSegurança
Você deve tomar medidas para garantir a validade do artefato baixado via sha256sum e gpg , se possível.
fonte
Uma solução usando o wget (interno) para obter o conteúdo HTML, filtre-o para o arquivo zip (com egrep) e faça o download do arquivo zip (com o wget externo).
fonte
Basta usar um dos URLs abaixo para fazer o download da versão mais recente: (tirou os URLs do projeto de cobrança de caixa, por exemplo): https://api.github.com/repos/boxbilling/boxbilling/releases
Faça o download da versão mais recente como zip: https://api.github.com/repos/boxbilling/boxbilling/zipball
Faça o download da versão mais recente como tarball: https://api.github.com/repos/boxbilling/boxbilling/tarball
Clique em um dos URLs para baixar a versão mais recente instantaneamente. Enquanto escrevi estas linhas, atualmente é: boxbilling-boxbilling-4.20-30-g452ad1c [.zip / .tar.gz]
UPDATE: Encontrei outro URL nos meus arquivos de log (ref. Ao exemplo acima) https://codeload.github.com/boxbilling/boxbilling/legacy.tar.gz/master
fonte
Não é possível de acordo com o suporte do GitHub a partir de 23/05/2018
Entre em contato com [email protected] em 2018-05-23 com a mensagem:
e eles responderam:
Também continuarei acompanhando isso em: https://github.com/isaacs/github/issues/658
Solução Python sem nenhuma dependência
Robusto e portátil:
Veja também:
Considere também pré-lançamentos
/latest
não vê pré-lançamentos, mas é fácil, pois/releases
mostra o último mais recente primeiro:fonte
A página de ajuda Vinculando a versões menciona um botão "Última versão", mas isso não gera um link para download.
https://github.com/reactiveui/ReactiveUI/releases/latest
Para isso, é necessário obter a tag mais recente primeiro (como mencionado em " URL do GitHub para a versão mais recente do arquivo de download ? "):
fonte
gh-pages
ramificação sempre que uma nova versão é feita; o objetivo é ter um link estático que eu possa usar para apenas "consultar a versão mais recente". No momento, minha melhor opção é apenas consultar a página de lançamentos.em PHP - redirecione para o download da versão mais recente. Basta colocar no seu espaço na web
fonte
Se você quiser usar apenas
curl
você pode tentar com-w '%{url_effective}'
que imprime o URL após uma cadeia de redirecionamento (seguida por curl se você o chamar-L
). Então, por exemplosaídas
https://github.com/github-tools/github/releases/tag/v3.1.0
.fonte
O Github agora suporta links estáticos para baixar arquivos individuais da versão mais recente: https://help.github.com/en/articles/linking-to-releases
fonte
Como a maioria visitar esta pergunta, eu estava absolutamente frustrado com encontrar uma maneira de baixar totalmente automatizar o ÚLTIMAS versão de versão ou um repo no Github. O benefício desta solução é que você não precisa especificar nenhum número de release ou tag; ele apenas agarra o MAIS RECENTE .
Realizei meus testes usando o seguinte usuário e repositório do Github:
" f1linux " = Usuário do Github
" pi-ap " = Repo
O nome do diretório arbitrário no qual o repositório é salvo é definido em:
DIRETO:
Usando o Firefox " Web Developer Tools" (3 bares no canto superior direito), na " Rede de seção" Eu encontrei
https://api.github.com
foi redirecionando parahttps://codeload.github.com
, assim, canalizando ocurl
quetar
eu era capaz de pegar o último repo versionadas e guardá-lo para um nome previsível assim poderia ser operado em:INDIRETO:
Depois de obter downloads totalmente automatizados da versão mais recente usando um URL DIRECT , voltei minha atenção para conseguir o mesmo com o redirecionamento do Github:
Método preferido:
No entanto, observe o comentário de Von abaixo que INDIRETO é o método preferido
Validação adicional:
Para garantir que meus resultados fossem reproduzíveis em outros repositórios de versão do Github, os mesmos testes foram executados com sucesso para o
doctl
kit de ferramentas API da Digital Ocean (que foi o que iniciou todo o exercício!):Ambos DIRETA e INDIRETA trabalho usando a mesma forma que acima, apenas mudando o nome de usuário e repo:
DIRETO:
INDIRETO:
fonte
Quero baixar os lançamentos do
README.md
arquivo na descrição do repositório. Lá, não consigo executar JavaScript.Posso adicionar links como estes ao arquivo README ou às páginas do github para todos os meus repositórios:
https://niccokunzmann.github.io/download_latest/<USER>/<REPOSITORY>/<FILE>
Faz o download do arquivo de versão mais recente do repositório.
https://niccokunzmann.github.io/download_latest/<FILE>
Isso funciona porque o referenciador JavaScript está definido e o repositório para download é determinado
document.referrer
. Assim, o link também funcionará para garfos.Você pode encontrar o código fonte aqui , garfo ou apenas usar meu repositório.
fonte
Caso o repositório esteja usando apenas tags em vez de release - cf. jQuery - as soluções que com base em uma URL não funcionam.
Em vez disso, você deve consultar todas as tags, classificá-las e construir o URL de download. Eu implementei essa solução para o idioma Go e o repositório jQuery: Link to Github .
Talvez isso ajude alguém.
fonte