Используя функцию выпуска GitHub , можно предоставить ссылку для загрузки определенной версии опубликованного программного обеспечения. Однако каждый раз, когда выпускается релиз, gh-страницу также нужно обновлять.
Есть ли способ получить ссылку на конкретный файл какой-либо последней версии программного обеспечения?
например, это будет статическая ссылка:
https://github.com/USER/PROJECT/releases/download/v0.0.0/package.zip
То, что я хотел бы что-то вроде:
https://github.com/USER/PROJECT/releases/download/latest/package.zip
ПРИМЕЧАНИЕ. Разница между этим вопросом и последним выпуском GitHub заключается в том, что этот вопрос специально предназначен для получения доступа к файлу, а не к странице последнего выпуска GitHub.
github
download
release
github-pages
Кристиан Рондо
источник
источник
Ответы:
Несколько лет спустя, но я просто реализовал простое перенаправление в службу поддержки
https://github.com/USER/PROJECT/releases/latest/download/package.zip
. Это должно быть перенаправлено на последний помеченныйpackage.zip
релиз актива. Надеюсь, это удобно!источник
.../releases/latest/download/...
против.../releases/download/v0.0.0/...
. Вы не можете просто заменитьv0.0.0
сlatest
на месте.Решение Linux для получения ссылки на загрузку последнего релиза (работает только в том случае, если релиз имеет только один актив)
источник
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/latestВы можете сделать ajax- запрос для получения последней версии URL загрузки, используя GitHub Releases API . Это также показывает, когда это было выпущено и количество загрузок:
Для вас важно установить URL-адрес кнопки по умолчанию для страницы выпусков (например, https://github.com/ShareX/ShareX/releases/latest ), поэтому, если браузер не поддерживает ajax (или javascript) или слишком медленный, чтобы получить URL, кнопка загрузки будет по-прежнему работать.
Когда запрос Ajax завершится, URL этой кнопки автоматически изменится на URL прямой загрузки.
Редактировать:
Я также сделал страницу загрузки, которая показывает несколько выпусков, которые вы можете найти здесь: https://getsharex.com/downloads/
Исходный код этого: https://github.com/ShareX/sharex.github.io/blob/master/js/downloads.js
источник
curl -s https://api.github.com/repos/DataTables/DataTables/releases/latest
Из командной строки, используя
curl
иjq
, получает первый файл последней версии:источник
jq --raw-output
это более чистый способ бросить цитаты. Если вы хотите только последнюю версию, ее дешевле получить.../releases/latest
и выбросить.[0] |
. Но выбор всех выпусков позволяет такие запросы, какjq '.[] | .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
. Концы с магией, и использование арки позволяет мне игнорировать файлы what.sha256, которые обычно присутствуют без каких-либо действий|head -n 1
.Другое решение Linux, использующее curl и wget для загрузки одного двоичного файла со страницы последней версии
Объяснение:
curl -s -L
это молча загрузить последнюю версию HTML (после перенаправления)egrep -o '...'
использует регулярные выражения, чтобы найти нужный файлwget --base=http://github.com/ -i -
преобразует относительный путь из конвейера в абсолютный URLи
-O scollector
устанавливает желаемое имя файла.может быть в состоянии добавить
-N
только для загрузки, если файл более новый, но S3 выдавал ошибку 403 Forbidden.источник
\.
например, 2.2.0/download/[0-9\.]*/
v
префикс, как тегv0.11.0
. Простоcurl -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
введите свой CLI, и он отлично работает. Спасибо, Грег!Как отмечалось ранее, jq полезен для этого и других API REST .
tl; dr - более подробная информация ниже
Предполагая, что вы хотите релиз MacOS :
Решение для атомных релизов
Обратите внимание, что в каждом репо могут быть разные способы предоставления нужного артефакта, поэтому я продемонстрирую для хорошо себя ведущего, такого как атом .
Получить имена активов опубликованы
Получить URL загрузки для желаемого ресурса
Ниже Atom -Mac мой любимый актив с помощью JQ
select(.name=="atom-mac.zip")
Скачать артефакт
JQ Детская площадка
Синтаксис JQ может быть сложным. Вот площадка для экспериментов с
jq
вышеупомянутым: https://jqplay.org/s/h6_LfoEHLZБезопасность
Вы должны принять меры для обеспечения достоверности загруженного артефакта через sha256sum и gpg , если это вообще возможно.
источник
Решение, использующее (внутренний) wget для получения содержимого HTML, отфильтруйте его для zip-файла (с egrep) и затем загрузите zip-файл (с внешним wget).
источник
Просто используйте один из приведенных ниже URL-адресов, чтобы загрузить последнюю версию: (например, URL-адреса из проекта boxbilling): https://api.github.com/repos/boxbilling/boxbilling/releases
Загрузите последний выпуск в формате zip: https://api.github.com/repos/boxbilling/boxbilling/zipball
Загрузите последнюю версию в виде tarball: https://api.github.com/repos/boxbilling/boxbilling/tarball
Нажмите на один из URL-адресов, чтобы мгновенно загрузить последнюю версию. Как я уже писал, в настоящее время это: boxbilling-boxbilling-4.20-30-g452ad1c [.zip / .tar.gz]
ОБНОВЛЕНИЕ: нашел другой URL в моих лог-файлах (см. Пример выше) https://codeload.github.com/boxbilling/boxbilling/legacy.tar.gz/master
источник
Не возможно в соответствии с поддержкой GitHub на 2018-05-23
Связаться с support@github.com 2018-05-23 с сообщением:
и они ответили:
Я также буду отслеживать это по адресу: https://github.com/isaacs/github/issues/658.
Решение Python без каких-либо зависимостей
Надежный и портативный:
Смотрите также:
Также рассмотрите предварительные выпуски
/latest
не видит предварительные релизы, но это легко сделать, так/releases
как сначала показывает самый последний:источник
На странице справки « Ссылка на релизы» упоминается кнопка «Последний выпуск», но это не дает вам ссылку для скачивания.
https://github.com/reactiveui/ReactiveUI/releases/latest
Для этого вам нужно сначала получить последний тег (как указано в « GitHub URL для последнего выпуска файла загрузки ? »):
источник
gh-pages
ветви каждый раз, когда выпускается новая версия; цель состоит в том, чтобы иметь статическую ссылку, которую я могу использовать, чтобы просто "обратиться к последней версии". Прямо сейчас мой лучший вариант - просто обратиться к странице релизов.в PHP - перенаправить на последнюю версию загрузки. Просто поместите на своем веб-пространстве
источник
Если вы хотите использовать просто,
curl
вы можете попробовать-w '%{url_effective}'
распечатать URL-адрес после цепочки перенаправления (за которым следует curl, если вы вызываете его с помощью-L
). Так, напримервыходы
https://github.com/github-tools/github/releases/tag/v3.1.0
.источник
Github теперь поддерживает статические ссылки для загрузки отдельных файлов из последней версии: https://help.github.com/en/articles/linking-to-releases.
источник
Как и большинство читателей этого вопроса, я был совершенно разочарован тем, что нашел способ полностью автоматизировать загрузку ПОСЛЕДНЕГО версионного релиза или репозитория в Github. Преимущество этого решения в том, что вам не нужно указывать какой-либо выпуск или номер тега - оно просто захватит ПОСЛЕДНИЕ .
Я провел тестирование с использованием следующего пользователя и репозитория Github:
" f1linux " = пользователь Github
" pi-ap " = репо
Произвольное имя каталога, в котором хранится репо, задается в:
НЕПОСРЕДСТВЕННЫЙ:
Использование «Firefox в Web Developer » инструментов (3 бара в правом верхнем углу), в « сетевом разделе» Я нашел
https://api.github.com
был перенаправляю кhttps://codeload.github.com
, так по конвейеру ,curl
чтобыtar
я был в состоянии захватить последний версионный репо и сохранить его на предсказуемое имя так это может быть прооперировано на:КОСВЕННЫЙ:
После того, как я достиг полностью автоматизированных загрузок последней версии с использованием DIRECT URL, я обратил свое внимание на то же самое с помощью перенаправления Github:
Предпочитаемый метод:
Тем не менее, обратите внимание, согласно комментарию Вона ниже, что INDIRECT является предпочтительным методом
Дальнейшая проверка:
Чтобы мои результаты можно было воспроизвести для других версий Github-репозиториев, те же тесты были успешно выполнены для
doctl
api-инструментария Digital Ocean (именно с этого и началось все упражнение!):И DIRECT, и INDIRECT работают, используя ту же форму, что и выше, просто меняя имя пользователя и репо:
НЕПОСРЕДСТВЕННЫЙ:
КОСВЕННЫЙ:
источник
Я хочу скачать релизы из
README.md
файла в описании репозитория. Там я не могу выполнить JavaScript.Я могу добавить такие ссылки в файл README или на страницы github для всех моих репозиториев:
https://niccokunzmann.github.io/download_latest/<USER>/<REPOSITORY>/<FILE>
Загружает последний файл релиза из репозитория.
https://niccokunzmann.github.io/download_latest/<FILE>
Это работает, потому что установлен реферер JavaScript и через него определяется хранилище для загрузки
document.referrer
. Таким образом, ссылка также будет работать для вилок.Вы можете найти исходный код здесь , разветвить или просто использовать мой репозиторий.
источник
В случае, если в репо используются только теги вместо релиза - ср. jQuery - решения, основанные на одном URL, не работают.
Вместо этого вам нужно запросить все теги, отсортировать их и создать URL для загрузки. Я реализовал такое решение для языка Go и репозитория jQuery: ссылка на Github .
Возможно, это кому-то поможет.
источник