WedX - журнал о программировании и компьютерных науках

Как выпускать версии на GitHub через командную строку?

На веб-сайте GitHub есть функция, которая позволяет вам отмечать определенные снимки вашего репозитория. как выпускные версии программного обеспечения. Пример URL: https://github.com/github/orchestrator/releases

Есть ли способ сделать это из командной строки, не входя в систему и не используя интерфейс? Я понимаю, что эта функция не является частью git, но я надеялся, что есть какой-то API или решение, которое другие люди используют для автоматизации процесса.



Ответы:


1

Есть много проектов, предлагающих это — порядок ниже только для индексации вещей —:

  1. github-release-cli Четона в Node (JS)
  2. github-release c4milo в Go (стремится к простоте)
  3. github-release в Go

И вы даже можете сделать это напрямую с помощью curl напрямую:

OWNER=
REPOSITORY=
ACCESS_TOKEN=
VERSION=
curl --data '{"tag_name": "v$VERSION",
                "target_commitish": "master",
                "name": "v$VERSION",
                "body": "Release of version $VERSION",
                "draft": false,
                "prerelease": false}' \
    https://api.github.com/repos/$OWNER/$REPOSITORY/releases?access_token=$ACCESS_TOKEN

из создания выпусков Github через командную строку Барри Койджа.

Если вам нужен полнофункциональный ответ на StackOverflow: Выпуск артефакта сборки на Github .

22.02.2017
  • Я бы порекомендовал пользователям вместо этого использовать hub, поскольку этот инструмент также находится в Go, но официально поддерживается GitHub: stackoverflow.com/a/52353299 /895245 16.09.2018

  • 2

    Вы можете использовать API "Создать выпуск" в < href="https://developer.github.com/v3/" rel="nofollow">API GitHub V3.

    POST /repos/:owner/:repo/releases
    

    См., например, этот ruby-скрипт "create-release.rb" от Матиас Лафельдт (mlafeldt):

    require "net/https"
    require "json"
    
    gh_token     = ENV.fetch("GITHUB_TOKEN")
    gh_user      = ARGV.fetch(0)
    gh_repo      = ARGV.fetch(1)
    release_name = ARGV.fetch(2)
    release_desc = ARGV[3]
    
    uri = URI("https://api.github.com")
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    
    request = Net::HTTP::Post.new("/repos/#{gh_user}/#{gh_repo}/releases")
    request["Accept"] = "application/vnd.github.manifold-preview"
    request["Authorization"] = "token #{gh_token}"
    request.body = {
      "tag_name"         => release_name,
      "target_commitish" => "master",
      "name"             => release_name,
      "body"             => release_desc,
      "draft"            => false,
      "prerelease"       => false,
    }.to_json
    
    response = http.request(request)
    abort response.body unless response.is_a?(Net::HTTPSuccess)
    
    release = JSON.parse(response.body)
    puts release
    
    19.01.2014
  • вот версия Python, которая также загружает файл: -in-githu/52354681#52354681" title="может ли кто-нибудь привести пример запросов python для загрузки ресурса выпуска в githu">stackoverflow.com/questions/38153418/ 16.09.2018

  • 3

    hub официальный инструмент GitHub CLI на основе Go

    https://github.com/github/hub

    Пакет Ubuntu, добавленный 19.04: https://packages.ubuntu.com/search?keywords=hub | https://github.com/github/hub/issues/718

    sudo apt install hub
    

    В противном случае для более старой версии Ubuntu сначала установите Go. В Ubuntu: https://askubuntu.com/questions/959932/installation-instructions-for-golang-1-9-into-ubuntu-16-04/1075726#1075726

    Затем установите hub:

    go get github.com/github/hub
    

    После установки hub изнутри вашего репо:

    hub release create -a prebuilt.zip -m 'release title' tag-name
    

    Этот:

    • запрашивает ваш пароль в первый раз, а затем автоматически создает и сохраняет токен API локально
    • создает неаннотированный тег на удаленном компьютере с именем tag-name
    • создает выпуск, связанный с этим тегом
    • загружает prebuilt.zip в качестве вложения

    Вы также можете предоставить существующий токен API с переменной окружения GITHUB_TOKEN.

    О других release операциях см.:

    hub release --help
    

    Протестировано на hub de684cb613c47572cc9ec90d4fd73eef80aef09c.

    Пример Python без каких-либо зависимостей

    Если вы похожи на меня и не хотите устанавливать еще один язык:

    Может ли кто-нибудь привести пример запроса python для загрузки ресурса выпуска в github?

    16.09.2018
  • Вы можете получить предварительно скомпилированный хаб из многих менеджеров пакетов, не нужно устанавливать go :) Но спасибо за пост 01.10.2019
  • @TheUnfunCat привет, спасибо, что связались со мной, пакет был доступен только для 19.04, поэтому я обновил ответ. Тем не менее, когда что-то доступно в менеджере языковых пакетов, я обычно использую его ;-) 01.10.2019

  • 4

    Это можно сделать с помощью github cli

    gh release create <tagname> --target <branchname>

    Github CLI

    28.12.2020

    5

    это можно сделать с помощью GitHub CLI

    Чтобы создать выпуск из аннотированного тега git, сначала создайте его локально с помощью git, отправьте тег на GitHub, а затем выполните эту команду.

    gh release create <tag> [<files>...] --target <branchname>

    Параметры

    -d, --draft Сохранить выпуск как черновик, а не публиковать его.

    -n, --notes строка Примечания к выпуску

    -F, --notes-file файл Читать примечания к выпуску из файла

    -p, --prerelease Пометить выпуск как предварительный

    , --target branch Целевая ветвь или полная фиксация SHA (по умолчанию: основная ветвь)

    -t, --title строка Заголовок выпуска

    18.02.2021

    6

    Предполагая, что вы извлекли нужную ветку из репозитория github (источник) и синхронизировали ее с ней, например. автоматически создать выпуск версии 2.5.0, выполните:

    git tag -a -m 'your comment' v2.5.0
    git push origin v2.5.0
    
    10.05.2021

    7

    Это можно сделать с помощью простой команды curl:

    curl -X POST -u YOURGITUSERNAME:YOURTOKEN --data '{"tag_name": "YOURTAGNAME","target_commitish": "YOURREPO","name": "YOURTAGNAME","body": "YOUR TAG DESCRIPTION","draft": false,"prerelease": false}' https://api.github.com/repos/YOURGITSITE/YOURREPO/releases
    
    21.05.2021
    Новые материалы

    Как создать диаграмму градиентной кисти с помощью D3.js
    Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


    Для любых предложений по сайту: [email protected]