Ответ 1
Github теперь предоставляет кнопку "Последний выпуск" на странице выпуска проекта, после того, как вы создали свой первый выпуск.
В приведенном примере эта кнопка ссылается на https://github.com/reactiveui/ReactiveUI/releases/latest
Я хочу, чтобы на моем сайте была кнопка "Загрузить последнюю версию" , которая будет представлять ссылку на последнюю версию (хранится в выпуске GitHub). Я попытался создать тег релиза с именем "последним", но мне стало сложно, когда я попытался загрузить новую версию (путаница с датой создания тега, заменой тегов и т.д.). Обновление ссылок для загрузки на моем веб-сайте вручную также является трудоемкой и скрупулезной задачей. Я вижу единственный способ - перенаправить все кнопки загрузки на какой-нибудь html, который, в свою очередь, перенаправится на последнюю последнюю версию.
Обратите внимание, что мой сайт размещен на страницах GitHub (статический хостинг), поэтому я просто не могу использовать серверные скрипты для создания ссылок. Любые идеи?
Github теперь предоставляет кнопку "Последний выпуск" на странице выпуска проекта, после того, как вы создали свой первый выпуск.
В приведенном примере эта кнопка ссылается на https://github.com/reactiveui/ReactiveUI/releases/latest
Вам не нужны никакие сценарии для создания ссылки для загрузки для последней версии. Просто используйте этот формат:
https://github.com/:owner/:repo/zipball/:branch
Примеры:
https://github.com/webix-hub/tracker/zipball/master
https://github.com/iDoRecall/selection-menu/zipball/gh-pages
Если по какой-то причине вы хотите получить ссылку на последнюю версию загрузки, включая ее номер версии, вы можете получить это из получить последний выпуск API:
GET /repos/:owner/:repo/releases/latest
Пример:
$.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>
Поскольку 18 февраля 2015 г., GitHUb V3 release API имеет получить последний выпуск API.
GET /repos/:owner/:repo/releases/latest
Возможно, вы могли бы использовать некоторые клиентские сценарии и динамически генерировать цель ссылки, вызывая GitHub api, используя некоторую магию JQuery?
API выпуска предоставляет способ получить список всех выпусков из репозитория. Например, эта ссылка возвращает форматированный список Json из всех релизы проекта ReactiveUI.
Извлечение первого приведет к последней версии.
В пределах этой полезной нагрузки:
Атрибут html_url
будет содержать первую часть строя URL (т.е. https://github.com/{owner}/{repository}/releases/{version}
).
В массиве assets
будет отображаться список загружаемых архивов. Каждый asset
будет иметь атрибут name
Построение целевого URL-адреса загрузки - всего несколько операций с цепочкой.
download/
между сегментом releases/
из html_url и номером версииРезультирующий URL-адрес будет иметь следующий формат: https://github.com/{owner}/{repository}/releases/download/{version}/name_of_asset
Например, что касается полезной нагрузки Json из ссылки ReactiveUI выше, у нас есть html_url: "https://github.com/reactiveui/ReactiveUI/releases/5.99.0"
и один актив с name: "ReactiveUI.6.0.Preview.1.zip"
.
Таким образом, URL-адрес загрузки https://github.com/reactiveui/ReactiveUI/releases/download/5.99.0/ReactiveUI.6.0.Preview.1.zip
Вы можете использовать следующее, где:
curl -L https://api.github.com/repos/${Organization}/${Repository}/tarball > ${Repository}.tar.gz
В каталоге верхнего уровня в файле .tar.gz есть хэш-хэш фиксации в имени каталога, что может быть проблемой, если вам нужен автоматический способ изменения в результирующем каталоге и что-то сделать.
В приведенном ниже методе это будет исключено и оставить файлы в папке с предсказуемым именем.
mkdir ${Repository}
curl -L https://api.github.com/repos/${Organization}/${Repository}/tarball | tar -zxv -C ${Repository} --strip-components=1
Если вы используете PHP, попробуйте выполнить код:
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);
}
Пример использования функции
echo '<a href="' .getLatestTagUrl('OzzyCzech/vestibulum') .'">Download</a>';
Поскольку я не видел ответа здесь, но это было очень полезно для меня при выполнении тестов непрерывной интеграции, этот однострочный, который требует только того, чтобы иметь завиток, позволит искать выпуски репозитория Github для загрузки последней версии
https://gist.github.com/steinwaywhw/a4cd19cda655b8249d908261a62687f8
Я использую его для запуска PHPSTan в нашем репозитории, используя следующий script
https://gist.github.com/rvanlaak/7491f2c4f0c456a93f90e31774300b62